content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // NO CHECKED-IN PROTOBUF GENCODE
  // source: messages.proto
  // Protobuf Java Version: 4.28.2
  
  package finsky.protos;
  
  /**
   * Protobuf type {@code finsky.protos.Common}
   */
  public  final class Common extends
      com.google.protobuf.GeneratedMessageLite<
          Common, Common.Builder> implements
      // @@protoc_insertion_point(message_implements:finsky.protos.Common)
      CommonOrBuilder {
    private Common() {
    }
    public interface ImageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.Image)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int32 imageType = 1;</code>
       * @return Whether the imageType field is set.
       */
      boolean hasImageType();
      /**
       * <code>optional int32 imageType = 1;</code>
       * @return The imageType.
       */
      int getImageType();
  
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       * @return Whether the dimension field is set.
       */
      boolean hasDimension();
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       * @return The dimension.
       */
      finsky.protos.Common.Image.Dimension getDimension();
  
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return Whether the imageUrl field is set.
       */
      boolean hasImageUrl();
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return The imageUrl.
       */
      java.lang.String getImageUrl();
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return The bytes for imageUrl.
       */
      com.google.protobuf.ByteString
          getImageUrlBytes();
  
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return Whether the altTextLocalized field is set.
       */
      boolean hasAltTextLocalized();
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return The altTextLocalized.
       */
      java.lang.String getAltTextLocalized();
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return The bytes for altTextLocalized.
       */
      com.google.protobuf.ByteString
          getAltTextLocalizedBytes();
  
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return Whether the secureUrl field is set.
       */
      boolean hasSecureUrl();
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return The secureUrl.
       */
      java.lang.String getSecureUrl();
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return The bytes for secureUrl.
       */
      com.google.protobuf.ByteString
          getSecureUrlBytes();
  
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       * @return Whether the positionInSequence field is set.
       */
      boolean hasPositionInSequence();
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       * @return The positionInSequence.
       */
      int getPositionInSequence();
  
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       * @return Whether the supportsFifeUrlOptions field is set.
       */
      boolean hasSupportsFifeUrlOptions();
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       * @return The supportsFifeUrlOptions.
       */
      boolean getSupportsFifeUrlOptions();
  
      /**
       * <code>optional group Citation = 10 { ... }</code>
       * @return Whether the citation field is set.
       */
      boolean hasCitation();
      /**
       * <code>optional group Citation = 10 { ... }</code>
       * @return The citation.
       */
      finsky.protos.Common.Image.Citation getCitation();
  
      /**
       * <code>optional string color = 15;</code>
       * @return Whether the color field is set.
       */
      boolean hasColor();
      /**
       * <code>optional string color = 15;</code>
       * @return The color.
       */
      java.lang.String getColor();
      /**
       * <code>optional string color = 15;</code>
       * @return The bytes for color.
       */
      com.google.protobuf.ByteString
          getColorBytes();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.Image}
     */
    public  static final class Image extends
        com.google.protobuf.GeneratedMessageLite<
            Image, Image.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.Image)
        ImageOrBuilder {
      private Image() {
        imageUrl_ = "";
        altTextLocalized_ = "";
        secureUrl_ = "";
        color_ = "";
      }
      public interface DimensionOrBuilder extends
          // @@protoc_insertion_point(interface_extends:finsky.protos.Common.Image.Dimension)
          com.google.protobuf.MessageLiteOrBuilder {
  
        /**
         * <code>optional int32 width = 3;</code>
         * @return Whether the width field is set.
         */
        boolean hasWidth();
        /**
         * <code>optional int32 width = 3;</code>
         * @return The width.
         */
        int getWidth();
  
        /**
         * <code>optional int32 height = 4;</code>
         * @return Whether the height field is set.
         */
        boolean hasHeight();
        /**
         * <code>optional int32 height = 4;</code>
         * @return The height.
         */
        int getHeight();
      }
      /**
       * Protobuf type {@code finsky.protos.Common.Image.Dimension}
       */
      public  static final class Dimension extends
          com.google.protobuf.GeneratedMessageLite<
              Dimension, Dimension.Builder> implements
          // @@protoc_insertion_point(message_implements:finsky.protos.Common.Image.Dimension)
          DimensionOrBuilder {
        private Dimension() {
        }
        private int bitField0_;
        public static final int WIDTH_FIELD_NUMBER = 3;
        private int width_;
        /**
         * <code>optional int32 width = 3;</code>
         * @return Whether the width field is set.
         */
        @java.lang.Override
        public boolean hasWidth() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional int32 width = 3;</code>
         * @return The width.
         */
        @java.lang.Override
        public int getWidth() {
          return width_;
        }
        /**
         * <code>optional int32 width = 3;</code>
         * @param value The width to set.
         */
        private void setWidth(int value) {
          bitField0_ |= 0x00000001;
          width_ = value;
        }
        /**
         * <code>optional int32 width = 3;</code>
         */
        private void clearWidth() {
          bitField0_ = (bitField0_ & ~0x00000001);
          width_ = 0;
        }
  
        public static final int HEIGHT_FIELD_NUMBER = 4;
        private int height_;
        /**
         * <code>optional int32 height = 4;</code>
         * @return Whether the height field is set.
         */
        @java.lang.Override
        public boolean hasHeight() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional int32 height = 4;</code>
         * @return The height.
         */
        @java.lang.Override
        public int getHeight() {
          return height_;
        }
        /**
         * <code>optional int32 height = 4;</code>
         * @param value The height to set.
         */
        private void setHeight(int value) {
          bitField0_ |= 0x00000002;
          height_ = value;
        }
        /**
         * <code>optional int32 height = 4;</code>
         */
        private void clearHeight() {
          bitField0_ = (bitField0_ & ~0x00000002);
          height_ = 0;
        }
  
        public static finsky.protos.Common.Image.Dimension parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }
  
        public static finsky.protos.Common.Image.Dimension parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }
  
        public static finsky.protos.Common.Image.Dimension parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static finsky.protos.Common.Image.Dimension parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }
  
        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(finsky.protos.Common.Image.Dimension prototype) {
          return DEFAULT_INSTANCE.createBuilder(prototype);
        }
  
        /**
         * Protobuf type {@code finsky.protos.Common.Image.Dimension}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              finsky.protos.Common.Image.Dimension, Builder> implements
            // @@protoc_insertion_point(builder_implements:finsky.protos.Common.Image.Dimension)
            finsky.protos.Common.Image.DimensionOrBuilder {
          // Construct using finsky.protos.Common.Image.Dimension.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }
  
  
          /**
           * <code>optional int32 width = 3;</code>
           * @return Whether the width field is set.
           */
          @java.lang.Override
          public boolean hasWidth() {
            return instance.hasWidth();
          }
          /**
           * <code>optional int32 width = 3;</code>
           * @return The width.
           */
          @java.lang.Override
          public int getWidth() {
            return instance.getWidth();
          }
          /**
           * <code>optional int32 width = 3;</code>
           * @param value The width to set.
           * @return This builder for chaining.
           */
          public Builder setWidth(int value) {
            copyOnWrite();
            instance.setWidth(value);
            return this;
          }
          /**
           * <code>optional int32 width = 3;</code>
           * @return This builder for chaining.
           */
          public Builder clearWidth() {
            copyOnWrite();
            instance.clearWidth();
            return this;
          }
  
          /**
           * <code>optional int32 height = 4;</code>
           * @return Whether the height field is set.
           */
          @java.lang.Override
          public boolean hasHeight() {
            return instance.hasHeight();
          }
          /**
           * <code>optional int32 height = 4;</code>
           * @return The height.
           */
          @java.lang.Override
          public int getHeight() {
            return instance.getHeight();
          }
          /**
           * <code>optional int32 height = 4;</code>
           * @param value The height to set.
           * @return This builder for chaining.
           */
          public Builder setHeight(int value) {
            copyOnWrite();
            instance.setHeight(value);
            return this;
          }
          /**
           * <code>optional int32 height = 4;</code>
           * @return This builder for chaining.
           */
          public Builder clearHeight() {
            copyOnWrite();
            instance.clearHeight();
            return this;
          }
  
          // @@protoc_insertion_point(builder_scope:finsky.protos.Common.Image.Dimension)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new finsky.protos.Common.Image.Dimension();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = new java.lang.Object[] {
                  "bitField0_",
                  "width_",
                  "height_",
                };
                java.lang.String info =
                    "\u0001\u0002\u0000\u0001\u0003\u0004\u0002\u0000\u0000\u0000\u0003\u1004\u0000\u0004" +
                    "\u1004\u0001";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<finsky.protos.Common.Image.Dimension> parser = PARSER;
              if (parser == null) {
                synchronized (finsky.protos.Common.Image.Dimension.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<finsky.protos.Common.Image.Dimension>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }
  
  
        // @@protoc_insertion_point(class_scope:finsky.protos.Common.Image.Dimension)
        private static final finsky.protos.Common.Image.Dimension DEFAULT_INSTANCE;
        static {
          Dimension defaultInstance = new Dimension();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            Dimension.class, defaultInstance);
        }
  
        public static finsky.protos.Common.Image.Dimension getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static volatile com.google.protobuf.Parser<Dimension> PARSER;
  
        public static com.google.protobuf.Parser<Dimension> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }
  
      public interface CitationOrBuilder extends
          // @@protoc_insertion_point(interface_extends:finsky.protos.Common.Image.Citation)
          com.google.protobuf.MessageLiteOrBuilder {
  
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return Whether the titleLocalized field is set.
         */
        boolean hasTitleLocalized();
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return The titleLocalized.
         */
        java.lang.String getTitleLocalized();
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return The bytes for titleLocalized.
         */
        com.google.protobuf.ByteString
            getTitleLocalizedBytes();
  
        /**
         * <code>optional string url = 12;</code>
         * @return Whether the url field is set.
         */
        boolean hasUrl();
        /**
         * <code>optional string url = 12;</code>
         * @return The url.
         */
        java.lang.String getUrl();
        /**
         * <code>optional string url = 12;</code>
         * @return The bytes for url.
         */
        com.google.protobuf.ByteString
            getUrlBytes();
      }
      /**
       * Protobuf type {@code finsky.protos.Common.Image.Citation}
       */
      public  static final class Citation extends
          com.google.protobuf.GeneratedMessageLite<
              Citation, Citation.Builder> implements
          // @@protoc_insertion_point(message_implements:finsky.protos.Common.Image.Citation)
          CitationOrBuilder {
        private Citation() {
          titleLocalized_ = "";
          url_ = "";
        }
        private int bitField0_;
        public static final int TITLELOCALIZED_FIELD_NUMBER = 11;
        private java.lang.String titleLocalized_;
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return Whether the titleLocalized field is set.
         */
        @java.lang.Override
        public boolean hasTitleLocalized() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return The titleLocalized.
         */
        @java.lang.Override
        public java.lang.String getTitleLocalized() {
          return titleLocalized_;
        }
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @return The bytes for titleLocalized.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getTitleLocalizedBytes() {
          return com.google.protobuf.ByteString.copyFromUtf8(titleLocalized_);
        }
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @param value The titleLocalized to set.
         */
        private void setTitleLocalized(
            java.lang.String value) {
          java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000001;
          titleLocalized_ = value;
        }
        /**
         * <code>optional string titleLocalized = 11;</code>
         */
        private void clearTitleLocalized() {
          bitField0_ = (bitField0_ & ~0x00000001);
          titleLocalized_ = getDefaultInstance().getTitleLocalized();
        }
        /**
         * <code>optional string titleLocalized = 11;</code>
         * @param value The bytes for titleLocalized to set.
         */
        private void setTitleLocalizedBytes(
            com.google.protobuf.ByteString value) {
          titleLocalized_ = value.toStringUtf8();
          bitField0_ |= 0x00000001;
        }
  
        public static final int URL_FIELD_NUMBER = 12;
        private java.lang.String url_;
        /**
         * <code>optional string url = 12;</code>
         * @return Whether the url field is set.
         */
        @java.lang.Override
        public boolean hasUrl() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string url = 12;</code>
         * @return The url.
         */
        @java.lang.Override
        public java.lang.String getUrl() {
          return url_;
        }
        /**
         * <code>optional string url = 12;</code>
         * @return The bytes for url.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getUrlBytes() {
          return com.google.protobuf.ByteString.copyFromUtf8(url_);
        }
        /**
         * <code>optional string url = 12;</code>
         * @param value The url to set.
         */
        private void setUrl(
            java.lang.String value) {
          java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000002;
          url_ = value;
        }
        /**
         * <code>optional string url = 12;</code>
         */
        private void clearUrl() {
          bitField0_ = (bitField0_ & ~0x00000002);
          url_ = getDefaultInstance().getUrl();
        }
        /**
         * <code>optional string url = 12;</code>
         * @param value The bytes for url to set.
         */
        private void setUrlBytes(
            com.google.protobuf.ByteString value) {
          url_ = value.toStringUtf8();
          bitField0_ |= 0x00000002;
        }
  
        public static finsky.protos.Common.Image.Citation parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }
  
        public static finsky.protos.Common.Image.Citation parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }
  
        public static finsky.protos.Common.Image.Citation parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static finsky.protos.Common.Image.Citation parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }
  
        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(finsky.protos.Common.Image.Citation prototype) {
          return DEFAULT_INSTANCE.createBuilder(prototype);
        }
  
        /**
         * Protobuf type {@code finsky.protos.Common.Image.Citation}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              finsky.protos.Common.Image.Citation, Builder> implements
            // @@protoc_insertion_point(builder_implements:finsky.protos.Common.Image.Citation)
            finsky.protos.Common.Image.CitationOrBuilder {
          // Construct using finsky.protos.Common.Image.Citation.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }
  
  
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @return Whether the titleLocalized field is set.
           */
          @java.lang.Override
          public boolean hasTitleLocalized() {
            return instance.hasTitleLocalized();
          }
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @return The titleLocalized.
           */
          @java.lang.Override
          public java.lang.String getTitleLocalized() {
            return instance.getTitleLocalized();
          }
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @return The bytes for titleLocalized.
           */
          @java.lang.Override
          public com.google.protobuf.ByteString
              getTitleLocalizedBytes() {
            return instance.getTitleLocalizedBytes();
          }
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @param value The titleLocalized to set.
           * @return This builder for chaining.
           */
          public Builder setTitleLocalized(
              java.lang.String value) {
            copyOnWrite();
            instance.setTitleLocalized(value);
            return this;
          }
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @return This builder for chaining.
           */
          public Builder clearTitleLocalized() {
            copyOnWrite();
            instance.clearTitleLocalized();
            return this;
          }
          /**
           * <code>optional string titleLocalized = 11;</code>
           * @param value The bytes for titleLocalized to set.
           * @return This builder for chaining.
           */
          public Builder setTitleLocalizedBytes(
              com.google.protobuf.ByteString value) {
            copyOnWrite();
            instance.setTitleLocalizedBytes(value);
            return this;
          }
  
          /**
           * <code>optional string url = 12;</code>
           * @return Whether the url field is set.
           */
          @java.lang.Override
          public boolean hasUrl() {
            return instance.hasUrl();
          }
          /**
           * <code>optional string url = 12;</code>
           * @return The url.
           */
          @java.lang.Override
          public java.lang.String getUrl() {
            return instance.getUrl();
          }
          /**
           * <code>optional string url = 12;</code>
           * @return The bytes for url.
           */
          @java.lang.Override
          public com.google.protobuf.ByteString
              getUrlBytes() {
            return instance.getUrlBytes();
          }
          /**
           * <code>optional string url = 12;</code>
           * @param value The url to set.
           * @return This builder for chaining.
           */
          public Builder setUrl(
              java.lang.String value) {
            copyOnWrite();
            instance.setUrl(value);
            return this;
          }
          /**
           * <code>optional string url = 12;</code>
           * @return This builder for chaining.
           */
          public Builder clearUrl() {
            copyOnWrite();
            instance.clearUrl();
            return this;
          }
          /**
           * <code>optional string url = 12;</code>
           * @param value The bytes for url to set.
           * @return This builder for chaining.
           */
          public Builder setUrlBytes(
              com.google.protobuf.ByteString value) {
            copyOnWrite();
            instance.setUrlBytes(value);
            return this;
          }
  
          // @@protoc_insertion_point(builder_scope:finsky.protos.Common.Image.Citation)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new finsky.protos.Common.Image.Citation();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = new java.lang.Object[] {
                  "bitField0_",
                  "titleLocalized_",
                  "url_",
                };
                java.lang.String info =
                    "\u0001\u0002\u0000\u0001\u000b\f\u0002\u0000\u0000\u0000\u000b\u1008\u0000\f\u1008" +
                    "\u0001";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<finsky.protos.Common.Image.Citation> parser = PARSER;
              if (parser == null) {
                synchronized (finsky.protos.Common.Image.Citation.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<finsky.protos.Common.Image.Citation>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }
  
  
        // @@protoc_insertion_point(class_scope:finsky.protos.Common.Image.Citation)
        private static final finsky.protos.Common.Image.Citation DEFAULT_INSTANCE;
        static {
          Citation defaultInstance = new Citation();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            Citation.class, defaultInstance);
        }
  
        public static finsky.protos.Common.Image.Citation getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static volatile com.google.protobuf.Parser<Citation> PARSER;
  
        public static com.google.protobuf.Parser<Citation> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }
  
      private int bitField0_;
      public static final int IMAGETYPE_FIELD_NUMBER = 1;
      private int imageType_;
      /**
       * <code>optional int32 imageType = 1;</code>
       * @return Whether the imageType field is set.
       */
      @java.lang.Override
      public boolean hasImageType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 imageType = 1;</code>
       * @return The imageType.
       */
      @java.lang.Override
      public int getImageType() {
        return imageType_;
      }
      /**
       * <code>optional int32 imageType = 1;</code>
       * @param value The imageType to set.
       */
      private void setImageType(int value) {
        bitField0_ |= 0x00000001;
        imageType_ = value;
      }
      /**
       * <code>optional int32 imageType = 1;</code>
       */
      private void clearImageType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        imageType_ = 0;
      }
  
      public static final int DIMENSION_FIELD_NUMBER = 2;
      private finsky.protos.Common.Image.Dimension dimension_;
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       */
      @java.lang.Override
      public boolean hasDimension() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       */
      @java.lang.Override
      public finsky.protos.Common.Image.Dimension getDimension() {
        return dimension_ == null ? finsky.protos.Common.Image.Dimension.getDefaultInstance() : dimension_;
      }
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       */
      private void setDimension(finsky.protos.Common.Image.Dimension value) {
        value.getClass();
    dimension_ = value;
        bitField0_ |= 0x00000002;
        }
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeDimension(finsky.protos.Common.Image.Dimension value) {
        value.getClass();
    if (dimension_ != null &&
            dimension_ != finsky.protos.Common.Image.Dimension.getDefaultInstance()) {
          dimension_ =
            finsky.protos.Common.Image.Dimension.newBuilder(dimension_).mergeFrom(value).buildPartial();
        } else {
          dimension_ = value;
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>optional group Dimension = 2 { ... }</code>
       */
      private void clearDimension() {  dimension_ = null;
        bitField0_ = (bitField0_ & ~0x00000002);
      }
  
      public static final int IMAGEURL_FIELD_NUMBER = 5;
      private java.lang.String imageUrl_;
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return Whether the imageUrl field is set.
       */
      @java.lang.Override
      public boolean hasImageUrl() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return The imageUrl.
       */
      @java.lang.Override
      public java.lang.String getImageUrl() {
        return imageUrl_;
      }
      /**
       * <code>optional string imageUrl = 5;</code>
       * @return The bytes for imageUrl.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getImageUrlBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(imageUrl_);
      }
      /**
       * <code>optional string imageUrl = 5;</code>
       * @param value The imageUrl to set.
       */
      private void setImageUrl(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000004;
        imageUrl_ = value;
      }
      /**
       * <code>optional string imageUrl = 5;</code>
       */
      private void clearImageUrl() {
        bitField0_ = (bitField0_ & ~0x00000004);
        imageUrl_ = getDefaultInstance().getImageUrl();
      }
      /**
       * <code>optional string imageUrl = 5;</code>
       * @param value The bytes for imageUrl to set.
       */
      private void setImageUrlBytes(
          com.google.protobuf.ByteString value) {
        imageUrl_ = value.toStringUtf8();
        bitField0_ |= 0x00000004;
      }
  
      public static final int ALTTEXTLOCALIZED_FIELD_NUMBER = 6;
      private java.lang.String altTextLocalized_;
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return Whether the altTextLocalized field is set.
       */
      @java.lang.Override
      public boolean hasAltTextLocalized() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return The altTextLocalized.
       */
      @java.lang.Override
      public java.lang.String getAltTextLocalized() {
        return altTextLocalized_;
      }
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @return The bytes for altTextLocalized.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAltTextLocalizedBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(altTextLocalized_);
      }
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @param value The altTextLocalized to set.
       */
      private void setAltTextLocalized(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000008;
        altTextLocalized_ = value;
      }
      /**
       * <code>optional string altTextLocalized = 6;</code>
       */
      private void clearAltTextLocalized() {
        bitField0_ = (bitField0_ & ~0x00000008);
        altTextLocalized_ = getDefaultInstance().getAltTextLocalized();
      }
      /**
       * <code>optional string altTextLocalized = 6;</code>
       * @param value The bytes for altTextLocalized to set.
       */
      private void setAltTextLocalizedBytes(
          com.google.protobuf.ByteString value) {
        altTextLocalized_ = value.toStringUtf8();
        bitField0_ |= 0x00000008;
      }
  
      public static final int SECUREURL_FIELD_NUMBER = 7;
      private java.lang.String secureUrl_;
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return Whether the secureUrl field is set.
       */
      @java.lang.Override
      public boolean hasSecureUrl() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return The secureUrl.
       */
      @java.lang.Override
      public java.lang.String getSecureUrl() {
        return secureUrl_;
      }
      /**
       * <code>optional string secureUrl = 7;</code>
       * @return The bytes for secureUrl.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSecureUrlBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(secureUrl_);
      }
      /**
       * <code>optional string secureUrl = 7;</code>
       * @param value The secureUrl to set.
       */
      private void setSecureUrl(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000010;
        secureUrl_ = value;
      }
      /**
       * <code>optional string secureUrl = 7;</code>
       */
      private void clearSecureUrl() {
        bitField0_ = (bitField0_ & ~0x00000010);
        secureUrl_ = getDefaultInstance().getSecureUrl();
      }
      /**
       * <code>optional string secureUrl = 7;</code>
       * @param value The bytes for secureUrl to set.
       */
      private void setSecureUrlBytes(
          com.google.protobuf.ByteString value) {
        secureUrl_ = value.toStringUtf8();
        bitField0_ |= 0x00000010;
      }
  
      public static final int POSITIONINSEQUENCE_FIELD_NUMBER = 8;
      private int positionInSequence_;
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       * @return Whether the positionInSequence field is set.
       */
      @java.lang.Override
      public boolean hasPositionInSequence() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       * @return The positionInSequence.
       */
      @java.lang.Override
      public int getPositionInSequence() {
        return positionInSequence_;
      }
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       * @param value The positionInSequence to set.
       */
      private void setPositionInSequence(int value) {
        bitField0_ |= 0x00000020;
        positionInSequence_ = value;
      }
      /**
       * <code>optional int32 positionInSequence = 8;</code>
       */
      private void clearPositionInSequence() {
        bitField0_ = (bitField0_ & ~0x00000020);
        positionInSequence_ = 0;
      }
  
      public static final int SUPPORTSFIFEURLOPTIONS_FIELD_NUMBER = 9;
      private boolean supportsFifeUrlOptions_;
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       * @return Whether the supportsFifeUrlOptions field is set.
       */
      @java.lang.Override
      public boolean hasSupportsFifeUrlOptions() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       * @return The supportsFifeUrlOptions.
       */
      @java.lang.Override
      public boolean getSupportsFifeUrlOptions() {
        return supportsFifeUrlOptions_;
      }
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       * @param value The supportsFifeUrlOptions to set.
       */
      private void setSupportsFifeUrlOptions(boolean value) {
        bitField0_ |= 0x00000040;
        supportsFifeUrlOptions_ = value;
      }
      /**
       * <code>optional bool supportsFifeUrlOptions = 9;</code>
       */
      private void clearSupportsFifeUrlOptions() {
        bitField0_ = (bitField0_ & ~0x00000040);
        supportsFifeUrlOptions_ = false;
      }
  
      public static final int CITATION_FIELD_NUMBER = 10;
      private finsky.protos.Common.Image.Citation citation_;
      /**
       * <code>optional group Citation = 10 { ... }</code>
       */
      @java.lang.Override
      public boolean hasCitation() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional group Citation = 10 { ... }</code>
       */
      @java.lang.Override
      public finsky.protos.Common.Image.Citation getCitation() {
        return citation_ == null ? finsky.protos.Common.Image.Citation.getDefaultInstance() : citation_;
      }
      /**
       * <code>optional group Citation = 10 { ... }</code>
       */
      private void setCitation(finsky.protos.Common.Image.Citation value) {
        value.getClass();
    citation_ = value;
        bitField0_ |= 0x00000080;
        }
      /**
       * <code>optional group Citation = 10 { ... }</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeCitation(finsky.protos.Common.Image.Citation value) {
        value.getClass();
    if (citation_ != null &&
            citation_ != finsky.protos.Common.Image.Citation.getDefaultInstance()) {
          citation_ =
            finsky.protos.Common.Image.Citation.newBuilder(citation_).mergeFrom(value).buildPartial();
        } else {
          citation_ = value;
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <code>optional group Citation = 10 { ... }</code>
       */
      private void clearCitation() {  citation_ = null;
        bitField0_ = (bitField0_ & ~0x00000080);
      }
  
      public static final int COLOR_FIELD_NUMBER = 15;
      private java.lang.String color_;
      /**
       * <code>optional string color = 15;</code>
       * @return Whether the color field is set.
       */
      @java.lang.Override
      public boolean hasColor() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string color = 15;</code>
       * @return The color.
       */
      @java.lang.Override
      public java.lang.String getColor() {
        return color_;
      }
      /**
       * <code>optional string color = 15;</code>
       * @return The bytes for color.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getColorBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(color_);
      }
      /**
       * <code>optional string color = 15;</code>
       * @param value The color to set.
       */
      private void setColor(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000100;
        color_ = value;
      }
      /**
       * <code>optional string color = 15;</code>
       */
      private void clearColor() {
        bitField0_ = (bitField0_ & ~0x00000100);
        color_ = getDefaultInstance().getColor();
      }
      /**
       * <code>optional string color = 15;</code>
       * @param value The bytes for color to set.
       */
      private void setColorBytes(
          com.google.protobuf.ByteString value) {
        color_ = value.toStringUtf8();
        bitField0_ |= 0x00000100;
      }
  
      public static finsky.protos.Common.Image parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Image parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Image parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Image parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Image parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Image parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Image parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.Image parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.Image parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.Image parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.Image parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.Image parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.Image prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.Image}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.Image, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.Image)
          finsky.protos.Common.ImageOrBuilder {
        // Construct using finsky.protos.Common.Image.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int32 imageType = 1;</code>
         * @return Whether the imageType field is set.
         */
        @java.lang.Override
        public boolean hasImageType() {
          return instance.hasImageType();
        }
        /**
         * <code>optional int32 imageType = 1;</code>
         * @return The imageType.
         */
        @java.lang.Override
        public int getImageType() {
          return instance.getImageType();
        }
        /**
         * <code>optional int32 imageType = 1;</code>
         * @param value The imageType to set.
         * @return This builder for chaining.
         */
        public Builder setImageType(int value) {
          copyOnWrite();
          instance.setImageType(value);
          return this;
        }
        /**
         * <code>optional int32 imageType = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearImageType() {
          copyOnWrite();
          instance.clearImageType();
          return this;
        }
  
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        @java.lang.Override
        public boolean hasDimension() {
          return instance.hasDimension();
        }
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        @java.lang.Override
        public finsky.protos.Common.Image.Dimension getDimension() {
          return instance.getDimension();
        }
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        public Builder setDimension(finsky.protos.Common.Image.Dimension value) {
          copyOnWrite();
          instance.setDimension(value);
          return this;
          }
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        public Builder setDimension(
            finsky.protos.Common.Image.Dimension.Builder builderForValue) {
          copyOnWrite();
          instance.setDimension(builderForValue.build());
          return this;
        }
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        public Builder mergeDimension(finsky.protos.Common.Image.Dimension value) {
          copyOnWrite();
          instance.mergeDimension(value);
          return this;
        }
        /**
         * <code>optional group Dimension = 2 { ... }</code>
         */
        public Builder clearDimension() {  copyOnWrite();
          instance.clearDimension();
          return this;
        }
  
        /**
         * <code>optional string imageUrl = 5;</code>
         * @return Whether the imageUrl field is set.
         */
        @java.lang.Override
        public boolean hasImageUrl() {
          return instance.hasImageUrl();
        }
        /**
         * <code>optional string imageUrl = 5;</code>
         * @return The imageUrl.
         */
        @java.lang.Override
        public java.lang.String getImageUrl() {
          return instance.getImageUrl();
        }
        /**
         * <code>optional string imageUrl = 5;</code>
         * @return The bytes for imageUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getImageUrlBytes() {
          return instance.getImageUrlBytes();
        }
        /**
         * <code>optional string imageUrl = 5;</code>
         * @param value The imageUrl to set.
         * @return This builder for chaining.
         */
        public Builder setImageUrl(
            java.lang.String value) {
          copyOnWrite();
          instance.setImageUrl(value);
          return this;
        }
        /**
         * <code>optional string imageUrl = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearImageUrl() {
          copyOnWrite();
          instance.clearImageUrl();
          return this;
        }
        /**
         * <code>optional string imageUrl = 5;</code>
         * @param value The bytes for imageUrl to set.
         * @return This builder for chaining.
         */
        public Builder setImageUrlBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setImageUrlBytes(value);
          return this;
        }
  
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @return Whether the altTextLocalized field is set.
         */
        @java.lang.Override
        public boolean hasAltTextLocalized() {
          return instance.hasAltTextLocalized();
        }
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @return The altTextLocalized.
         */
        @java.lang.Override
        public java.lang.String getAltTextLocalized() {
          return instance.getAltTextLocalized();
        }
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @return The bytes for altTextLocalized.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getAltTextLocalizedBytes() {
          return instance.getAltTextLocalizedBytes();
        }
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @param value The altTextLocalized to set.
         * @return This builder for chaining.
         */
        public Builder setAltTextLocalized(
            java.lang.String value) {
          copyOnWrite();
          instance.setAltTextLocalized(value);
          return this;
        }
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearAltTextLocalized() {
          copyOnWrite();
          instance.clearAltTextLocalized();
          return this;
        }
        /**
         * <code>optional string altTextLocalized = 6;</code>
         * @param value The bytes for altTextLocalized to set.
         * @return This builder for chaining.
         */
        public Builder setAltTextLocalizedBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setAltTextLocalizedBytes(value);
          return this;
        }
  
        /**
         * <code>optional string secureUrl = 7;</code>
         * @return Whether the secureUrl field is set.
         */
        @java.lang.Override
        public boolean hasSecureUrl() {
          return instance.hasSecureUrl();
        }
        /**
         * <code>optional string secureUrl = 7;</code>
         * @return The secureUrl.
         */
        @java.lang.Override
        public java.lang.String getSecureUrl() {
          return instance.getSecureUrl();
        }
        /**
         * <code>optional string secureUrl = 7;</code>
         * @return The bytes for secureUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getSecureUrlBytes() {
          return instance.getSecureUrlBytes();
        }
        /**
         * <code>optional string secureUrl = 7;</code>
         * @param value The secureUrl to set.
         * @return This builder for chaining.
         */
        public Builder setSecureUrl(
            java.lang.String value) {
          copyOnWrite();
          instance.setSecureUrl(value);
          return this;
        }
        /**
         * <code>optional string secureUrl = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearSecureUrl() {
          copyOnWrite();
          instance.clearSecureUrl();
          return this;
        }
        /**
         * <code>optional string secureUrl = 7;</code>
         * @param value The bytes for secureUrl to set.
         * @return This builder for chaining.
         */
        public Builder setSecureUrlBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setSecureUrlBytes(value);
          return this;
        }
  
        /**
         * <code>optional int32 positionInSequence = 8;</code>
         * @return Whether the positionInSequence field is set.
         */
        @java.lang.Override
        public boolean hasPositionInSequence() {
          return instance.hasPositionInSequence();
        }
        /**
         * <code>optional int32 positionInSequence = 8;</code>
         * @return The positionInSequence.
         */
        @java.lang.Override
        public int getPositionInSequence() {
          return instance.getPositionInSequence();
        }
        /**
         * <code>optional int32 positionInSequence = 8;</code>
         * @param value The positionInSequence to set.
         * @return This builder for chaining.
         */
        public Builder setPositionInSequence(int value) {
          copyOnWrite();
          instance.setPositionInSequence(value);
          return this;
        }
        /**
         * <code>optional int32 positionInSequence = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearPositionInSequence() {
          copyOnWrite();
          instance.clearPositionInSequence();
          return this;
        }
  
        /**
         * <code>optional bool supportsFifeUrlOptions = 9;</code>
         * @return Whether the supportsFifeUrlOptions field is set.
         */
        @java.lang.Override
        public boolean hasSupportsFifeUrlOptions() {
          return instance.hasSupportsFifeUrlOptions();
        }
        /**
         * <code>optional bool supportsFifeUrlOptions = 9;</code>
         * @return The supportsFifeUrlOptions.
         */
        @java.lang.Override
        public boolean getSupportsFifeUrlOptions() {
          return instance.getSupportsFifeUrlOptions();
        }
        /**
         * <code>optional bool supportsFifeUrlOptions = 9;</code>
         * @param value The supportsFifeUrlOptions to set.
         * @return This builder for chaining.
         */
        public Builder setSupportsFifeUrlOptions(boolean value) {
          copyOnWrite();
          instance.setSupportsFifeUrlOptions(value);
          return this;
        }
        /**
         * <code>optional bool supportsFifeUrlOptions = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearSupportsFifeUrlOptions() {
          copyOnWrite();
          instance.clearSupportsFifeUrlOptions();
          return this;
        }
  
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        @java.lang.Override
        public boolean hasCitation() {
          return instance.hasCitation();
        }
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        @java.lang.Override
        public finsky.protos.Common.Image.Citation getCitation() {
          return instance.getCitation();
        }
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        public Builder setCitation(finsky.protos.Common.Image.Citation value) {
          copyOnWrite();
          instance.setCitation(value);
          return this;
          }
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        public Builder setCitation(
            finsky.protos.Common.Image.Citation.Builder builderForValue) {
          copyOnWrite();
          instance.setCitation(builderForValue.build());
          return this;
        }
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        public Builder mergeCitation(finsky.protos.Common.Image.Citation value) {
          copyOnWrite();
          instance.mergeCitation(value);
          return this;
        }
        /**
         * <code>optional group Citation = 10 { ... }</code>
         */
        public Builder clearCitation() {  copyOnWrite();
          instance.clearCitation();
          return this;
        }
  
        /**
         * <code>optional string color = 15;</code>
         * @return Whether the color field is set.
         */
        @java.lang.Override
        public boolean hasColor() {
          return instance.hasColor();
        }
        /**
         * <code>optional string color = 15;</code>
         * @return The color.
         */
        @java.lang.Override
        public java.lang.String getColor() {
          return instance.getColor();
        }
        /**
         * <code>optional string color = 15;</code>
         * @return The bytes for color.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getColorBytes() {
          return instance.getColorBytes();
        }
        /**
         * <code>optional string color = 15;</code>
         * @param value The color to set.
         * @return This builder for chaining.
         */
        public Builder setColor(
            java.lang.String value) {
          copyOnWrite();
          instance.setColor(value);
          return this;
        }
        /**
         * <code>optional string color = 15;</code>
         * @return This builder for chaining.
         */
        public Builder clearColor() {
          copyOnWrite();
          instance.clearColor();
          return this;
        }
        /**
         * <code>optional string color = 15;</code>
         * @param value The bytes for color to set.
         * @return This builder for chaining.
         */
        public Builder setColorBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setColorBytes(value);
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.Image)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.Image();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "imageType_",
                "dimension_",
                "imageUrl_",
                "altTextLocalized_",
                "secureUrl_",
                "positionInSequence_",
                "supportsFifeUrlOptions_",
                "citation_",
                "color_",
              };
              java.lang.String info =
                  "\u0001\t\u0000\u0001\u0001\u000f\t\u0000\u0000\u0000\u0001\u1004\u0000\u0002\u1011" +
                  "\u0001\u0005\u1008\u0002\u0006\u1008\u0003\u0007\u1008\u0004\b\u1004\u0005\t\u1007" +
                  "\u0006\n\u1011\u0007\u000f\u1008\b";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.Image> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.Image.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.Image>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.Image)
      private static final finsky.protos.Common.Image DEFAULT_INSTANCE;
      static {
        Image defaultInstance = new Image();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Image.class, defaultInstance);
      }
  
      public static finsky.protos.Common.Image getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<Image> PARSER;
  
      public static com.google.protobuf.Parser<Image> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface OfferOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.Offer)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int64 micros = 1;</code>
       * @return Whether the micros field is set.
       */
      boolean hasMicros();
      /**
       * <code>optional int64 micros = 1;</code>
       * @return The micros.
       */
      long getMicros();
  
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return Whether the currencyCode field is set.
       */
      boolean hasCurrencyCode();
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return The currencyCode.
       */
      java.lang.String getCurrencyCode();
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return The bytes for currencyCode.
       */
      com.google.protobuf.ByteString
          getCurrencyCodeBytes();
  
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return Whether the formattedAmount field is set.
       */
      boolean hasFormattedAmount();
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return The formattedAmount.
       */
      java.lang.String getFormattedAmount();
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return The bytes for formattedAmount.
       */
      com.google.protobuf.ByteString
          getFormattedAmountBytes();
  
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      java.util.List<finsky.protos.Common.Offer> 
          getConvertedPriceList();
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      finsky.protos.Common.Offer getConvertedPrice(int index);
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      int getConvertedPriceCount();
  
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       * @return Whether the checkoutFlowRequired field is set.
       */
      boolean hasCheckoutFlowRequired();
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       * @return The checkoutFlowRequired.
       */
      boolean getCheckoutFlowRequired();
  
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       * @return Whether the fullPriceMicros field is set.
       */
      boolean hasFullPriceMicros();
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       * @return The fullPriceMicros.
       */
      long getFullPriceMicros();
  
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return Whether the formattedFullAmount field is set.
       */
      boolean hasFormattedFullAmount();
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return The formattedFullAmount.
       */
      java.lang.String getFormattedFullAmount();
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return The bytes for formattedFullAmount.
       */
      com.google.protobuf.ByteString
          getFormattedFullAmountBytes();
  
      /**
       * <code>optional int32 offerType = 8;</code>
       * @return Whether the offerType field is set.
       */
      boolean hasOfferType();
      /**
       * <code>optional int32 offerType = 8;</code>
       * @return The offerType.
       */
      int getOfferType();
  
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       * @return Whether the rentalTerms field is set.
       */
      boolean hasRentalTerms();
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       * @return The rentalTerms.
       */
      finsky.protos.Common.RentalTerms getRentalTerms();
  
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       * @return Whether the onSaleDate field is set.
       */
      boolean hasOnSaleDate();
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       * @return The onSaleDate.
       */
      long getOnSaleDate();
  
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @return A list containing the promotionLabel.
       */
      java.util.List<java.lang.String>
          getPromotionLabelList();
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @return The count of promotionLabel.
       */
      int getPromotionLabelCount();
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param index The index of the element to return.
       * @return The promotionLabel at the given index.
       */
      java.lang.String getPromotionLabel(int index);
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param index The index of the element to return.
       * @return The promotionLabel at the given index.
       */
      com.google.protobuf.ByteString
          getPromotionLabelBytes(int index);
  
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       * @return Whether the subscriptionTerms field is set.
       */
      boolean hasSubscriptionTerms();
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       * @return The subscriptionTerms.
       */
      finsky.protos.Common.SubscriptionTerms getSubscriptionTerms();
  
      /**
       * <code>optional string formattedName = 13;</code>
       * @return Whether the formattedName field is set.
       */
      boolean hasFormattedName();
      /**
       * <code>optional string formattedName = 13;</code>
       * @return The formattedName.
       */
      java.lang.String getFormattedName();
      /**
       * <code>optional string formattedName = 13;</code>
       * @return The bytes for formattedName.
       */
      com.google.protobuf.ByteString
          getFormattedNameBytes();
  
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return Whether the formattedDescription field is set.
       */
      boolean hasFormattedDescription();
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return The formattedDescription.
       */
      java.lang.String getFormattedDescription();
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return The bytes for formattedDescription.
       */
      com.google.protobuf.ByteString
          getFormattedDescriptionBytes();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.Offer}
     */
    public  static final class Offer extends
        com.google.protobuf.GeneratedMessageLite<
            Offer, Offer.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.Offer)
        OfferOrBuilder {
      private Offer() {
        currencyCode_ = "";
        formattedAmount_ = "";
        convertedPrice_ = emptyProtobufList();
        formattedFullAmount_ = "";
        promotionLabel_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
        formattedName_ = "";
        formattedDescription_ = "";
      }
      /**
       * Protobuf enum {@code finsky.protos.Common.Offer.TYPE}
       */
      public enum TYPE
          implements com.google.protobuf.Internal.EnumLite {
        /**
         * <code>TYPE_1 = 1;</code>
         */
        TYPE_1(1),
        ;
  
        /**
         * <code>TYPE_1 = 1;</code>
         */
        public static final int TYPE_1_VALUE = 1;
  
  
        @java.lang.Override
        public final int getNumber() {
          return value;
        }
  
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static TYPE valueOf(int value) {
          return forNumber(value);
        }
  
        public static TYPE forNumber(int value) {
          switch (value) {
            case 1: return TYPE_1;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<TYPE>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            TYPE> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<TYPE>() {
                @java.lang.Override
                public TYPE findValueByNumber(int number) {
                  return TYPE.forNumber(number);
                }
              };
  
        public static com.google.protobuf.Internal.EnumVerifier 
            internalGetVerifier() {
          return TYPEVerifier.INSTANCE;
        }
  
        private static final class TYPEVerifier implements 
             com.google.protobuf.Internal.EnumVerifier { 
                static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new TYPEVerifier();
                @java.lang.Override
                public boolean isInRange(int number) {
                  return TYPE.forNumber(number) != null;
                }
              };
  
        private final int value;
  
        private TYPE(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:finsky.protos.Common.Offer.TYPE)
      }
  
      private int bitField0_;
      public static final int MICROS_FIELD_NUMBER = 1;
      private long micros_;
      /**
       * <code>optional int64 micros = 1;</code>
       * @return Whether the micros field is set.
       */
      @java.lang.Override
      public boolean hasMicros() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int64 micros = 1;</code>
       * @return The micros.
       */
      @java.lang.Override
      public long getMicros() {
        return micros_;
      }
      /**
       * <code>optional int64 micros = 1;</code>
       * @param value The micros to set.
       */
      private void setMicros(long value) {
        bitField0_ |= 0x00000001;
        micros_ = value;
      }
      /**
       * <code>optional int64 micros = 1;</code>
       */
      private void clearMicros() {
        bitField0_ = (bitField0_ & ~0x00000001);
        micros_ = 0L;
      }
  
      public static final int CURRENCYCODE_FIELD_NUMBER = 2;
      private java.lang.String currencyCode_;
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return Whether the currencyCode field is set.
       */
      @java.lang.Override
      public boolean hasCurrencyCode() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return The currencyCode.
       */
      @java.lang.Override
      public java.lang.String getCurrencyCode() {
        return currencyCode_;
      }
      /**
       * <code>optional string currencyCode = 2;</code>
       * @return The bytes for currencyCode.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCurrencyCodeBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(currencyCode_);
      }
      /**
       * <code>optional string currencyCode = 2;</code>
       * @param value The currencyCode to set.
       */
      private void setCurrencyCode(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000002;
        currencyCode_ = value;
      }
      /**
       * <code>optional string currencyCode = 2;</code>
       */
      private void clearCurrencyCode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        currencyCode_ = getDefaultInstance().getCurrencyCode();
      }
      /**
       * <code>optional string currencyCode = 2;</code>
       * @param value The bytes for currencyCode to set.
       */
      private void setCurrencyCodeBytes(
          com.google.protobuf.ByteString value) {
        currencyCode_ = value.toStringUtf8();
        bitField0_ |= 0x00000002;
      }
  
      public static final int FORMATTEDAMOUNT_FIELD_NUMBER = 3;
      private java.lang.String formattedAmount_;
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return Whether the formattedAmount field is set.
       */
      @java.lang.Override
      public boolean hasFormattedAmount() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return The formattedAmount.
       */
      @java.lang.Override
      public java.lang.String getFormattedAmount() {
        return formattedAmount_;
      }
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @return The bytes for formattedAmount.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFormattedAmountBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(formattedAmount_);
      }
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @param value The formattedAmount to set.
       */
      private void setFormattedAmount(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000004;
        formattedAmount_ = value;
      }
      /**
       * <code>optional string formattedAmount = 3;</code>
       */
      private void clearFormattedAmount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        formattedAmount_ = getDefaultInstance().getFormattedAmount();
      }
      /**
       * <code>optional string formattedAmount = 3;</code>
       * @param value The bytes for formattedAmount to set.
       */
      private void setFormattedAmountBytes(
          com.google.protobuf.ByteString value) {
        formattedAmount_ = value.toStringUtf8();
        bitField0_ |= 0x00000004;
      }
  
      public static final int CONVERTEDPRICE_FIELD_NUMBER = 4;
      private com.google.protobuf.Internal.ProtobufList<finsky.protos.Common.Offer> convertedPrice_;
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      @java.lang.Override
      public java.util.List<finsky.protos.Common.Offer> getConvertedPriceList() {
        return convertedPrice_;
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      public java.util.List<? extends finsky.protos.Common.OfferOrBuilder> 
          getConvertedPriceOrBuilderList() {
        return convertedPrice_;
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      @java.lang.Override
      public int getConvertedPriceCount() {
        return convertedPrice_.size();
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.Offer getConvertedPrice(int index) {
        return convertedPrice_.get(index);
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      public finsky.protos.Common.OfferOrBuilder getConvertedPriceOrBuilder(
          int index) {
        return convertedPrice_.get(index);
      }
      private void ensureConvertedPriceIsMutable() {
        com.google.protobuf.Internal.ProtobufList<finsky.protos.Common.Offer> tmp = convertedPrice_;
        if (!tmp.isModifiable()) {
          convertedPrice_ =
              com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
         }
      }
  
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void setConvertedPrice(
          int index, finsky.protos.Common.Offer value) {
        value.getClass();
    ensureConvertedPriceIsMutable();
        convertedPrice_.set(index, value);
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void addConvertedPrice(finsky.protos.Common.Offer value) {
        value.getClass();
    ensureConvertedPriceIsMutable();
        convertedPrice_.add(value);
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void addConvertedPrice(
          int index, finsky.protos.Common.Offer value) {
        value.getClass();
    ensureConvertedPriceIsMutable();
        convertedPrice_.add(index, value);
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void addAllConvertedPrice(
          java.lang.Iterable<? extends finsky.protos.Common.Offer> values) {
        ensureConvertedPriceIsMutable();
        com.google.protobuf.AbstractMessageLite.addAll(
            values, convertedPrice_);
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void clearConvertedPrice() {
        convertedPrice_ = emptyProtobufList();
      }
      /**
       * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
       */
      private void removeConvertedPrice(int index) {
        ensureConvertedPriceIsMutable();
        convertedPrice_.remove(index);
      }
  
      public static final int CHECKOUTFLOWREQUIRED_FIELD_NUMBER = 5;
      private boolean checkoutFlowRequired_;
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       * @return Whether the checkoutFlowRequired field is set.
       */
      @java.lang.Override
      public boolean hasCheckoutFlowRequired() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       * @return The checkoutFlowRequired.
       */
      @java.lang.Override
      public boolean getCheckoutFlowRequired() {
        return checkoutFlowRequired_;
      }
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       * @param value The checkoutFlowRequired to set.
       */
      private void setCheckoutFlowRequired(boolean value) {
        bitField0_ |= 0x00000008;
        checkoutFlowRequired_ = value;
      }
      /**
       * <code>optional bool checkoutFlowRequired = 5;</code>
       */
      private void clearCheckoutFlowRequired() {
        bitField0_ = (bitField0_ & ~0x00000008);
        checkoutFlowRequired_ = false;
      }
  
      public static final int FULLPRICEMICROS_FIELD_NUMBER = 6;
      private long fullPriceMicros_;
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       * @return Whether the fullPriceMicros field is set.
       */
      @java.lang.Override
      public boolean hasFullPriceMicros() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       * @return The fullPriceMicros.
       */
      @java.lang.Override
      public long getFullPriceMicros() {
        return fullPriceMicros_;
      }
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       * @param value The fullPriceMicros to set.
       */
      private void setFullPriceMicros(long value) {
        bitField0_ |= 0x00000010;
        fullPriceMicros_ = value;
      }
      /**
       * <code>optional int64 fullPriceMicros = 6;</code>
       */
      private void clearFullPriceMicros() {
        bitField0_ = (bitField0_ & ~0x00000010);
        fullPriceMicros_ = 0L;
      }
  
      public static final int FORMATTEDFULLAMOUNT_FIELD_NUMBER = 7;
      private java.lang.String formattedFullAmount_;
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return Whether the formattedFullAmount field is set.
       */
      @java.lang.Override
      public boolean hasFormattedFullAmount() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return The formattedFullAmount.
       */
      @java.lang.Override
      public java.lang.String getFormattedFullAmount() {
        return formattedFullAmount_;
      }
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @return The bytes for formattedFullAmount.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFormattedFullAmountBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(formattedFullAmount_);
      }
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @param value The formattedFullAmount to set.
       */
      private void setFormattedFullAmount(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000020;
        formattedFullAmount_ = value;
      }
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       */
      private void clearFormattedFullAmount() {
        bitField0_ = (bitField0_ & ~0x00000020);
        formattedFullAmount_ = getDefaultInstance().getFormattedFullAmount();
      }
      /**
       * <code>optional string formattedFullAmount = 7;</code>
       * @param value The bytes for formattedFullAmount to set.
       */
      private void setFormattedFullAmountBytes(
          com.google.protobuf.ByteString value) {
        formattedFullAmount_ = value.toStringUtf8();
        bitField0_ |= 0x00000020;
      }
  
      public static final int OFFERTYPE_FIELD_NUMBER = 8;
      private int offerType_;
      /**
       * <code>optional int32 offerType = 8;</code>
       * @return Whether the offerType field is set.
       */
      @java.lang.Override
      public boolean hasOfferType() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional int32 offerType = 8;</code>
       * @return The offerType.
       */
      @java.lang.Override
      public int getOfferType() {
        return offerType_;
      }
      /**
       * <code>optional int32 offerType = 8;</code>
       * @param value The offerType to set.
       */
      private void setOfferType(int value) {
        bitField0_ |= 0x00000040;
        offerType_ = value;
      }
      /**
       * <code>optional int32 offerType = 8;</code>
       */
      private void clearOfferType() {
        bitField0_ = (bitField0_ & ~0x00000040);
        offerType_ = 0;
      }
  
      public static final int RENTALTERMS_FIELD_NUMBER = 9;
      private finsky.protos.Common.RentalTerms rentalTerms_;
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       */
      @java.lang.Override
      public boolean hasRentalTerms() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.RentalTerms getRentalTerms() {
        return rentalTerms_ == null ? finsky.protos.Common.RentalTerms.getDefaultInstance() : rentalTerms_;
      }
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       */
      private void setRentalTerms(finsky.protos.Common.RentalTerms value) {
        value.getClass();
    rentalTerms_ = value;
        bitField0_ |= 0x00000080;
        }
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeRentalTerms(finsky.protos.Common.RentalTerms value) {
        value.getClass();
    if (rentalTerms_ != null &&
            rentalTerms_ != finsky.protos.Common.RentalTerms.getDefaultInstance()) {
          rentalTerms_ =
            finsky.protos.Common.RentalTerms.newBuilder(rentalTerms_).mergeFrom(value).buildPartial();
        } else {
          rentalTerms_ = value;
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
       */
      private void clearRentalTerms() {  rentalTerms_ = null;
        bitField0_ = (bitField0_ & ~0x00000080);
      }
  
      public static final int ONSALEDATE_FIELD_NUMBER = 10;
      private long onSaleDate_;
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       * @return Whether the onSaleDate field is set.
       */
      @java.lang.Override
      public boolean hasOnSaleDate() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       * @return The onSaleDate.
       */
      @java.lang.Override
      public long getOnSaleDate() {
        return onSaleDate_;
      }
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       * @param value The onSaleDate to set.
       */
      private void setOnSaleDate(long value) {
        bitField0_ |= 0x00000100;
        onSaleDate_ = value;
      }
      /**
       * <code>optional int64 onSaleDate = 10;</code>
       */
      private void clearOnSaleDate() {
        bitField0_ = (bitField0_ & ~0x00000100);
        onSaleDate_ = 0L;
      }
  
      public static final int PROMOTIONLABEL_FIELD_NUMBER = 11;
      private com.google.protobuf.Internal.ProtobufList<java.lang.String> promotionLabel_;
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @return A list containing the promotionLabel.
       */
      @java.lang.Override
      public java.util.List<java.lang.String> getPromotionLabelList() {
        return promotionLabel_;
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @return The count of promotionLabel.
       */
      @java.lang.Override
      public int getPromotionLabelCount() {
        return promotionLabel_.size();
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param index The index of the element to return.
       * @return The promotionLabel at the given index.
       */
      @java.lang.Override
      public java.lang.String getPromotionLabel(int index) {
        return promotionLabel_.get(index);
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param index The index of the value to return.
       * @return The bytes of the promotionLabel at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPromotionLabelBytes(int index) {
        return com.google.protobuf.ByteString.copyFromUtf8(
            promotionLabel_.get(index));
      }
      private void ensurePromotionLabelIsMutable() {
        com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
            promotionLabel_;  if (!tmp.isModifiable()) {
          promotionLabel_ =
              com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
         }
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param index The index to set the value at.
       * @param value The promotionLabel to set.
       */
      private void setPromotionLabel(
          int index, java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    ensurePromotionLabelIsMutable();
        promotionLabel_.set(index, value);
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param value The promotionLabel to add.
       */
      private void addPromotionLabel(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    ensurePromotionLabelIsMutable();
        promotionLabel_.add(value);
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param values The promotionLabel to add.
       */
      private void addAllPromotionLabel(
          java.lang.Iterable<java.lang.String> values) {
        ensurePromotionLabelIsMutable();
        com.google.protobuf.AbstractMessageLite.addAll(
            values, promotionLabel_);
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       */
      private void clearPromotionLabel() {
        promotionLabel_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      }
      /**
       * <code>repeated string promotionLabel = 11;</code>
       * @param value The bytes of the promotionLabel to add.
       */
      private void addPromotionLabelBytes(
          com.google.protobuf.ByteString value) {
        ensurePromotionLabelIsMutable();
        promotionLabel_.add(value.toStringUtf8());
      }
  
      public static final int SUBSCRIPTIONTERMS_FIELD_NUMBER = 12;
      private finsky.protos.Common.SubscriptionTerms subscriptionTerms_;
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       */
      @java.lang.Override
      public boolean hasSubscriptionTerms() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.SubscriptionTerms getSubscriptionTerms() {
        return subscriptionTerms_ == null ? finsky.protos.Common.SubscriptionTerms.getDefaultInstance() : subscriptionTerms_;
      }
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       */
      private void setSubscriptionTerms(finsky.protos.Common.SubscriptionTerms value) {
        value.getClass();
    subscriptionTerms_ = value;
        bitField0_ |= 0x00000200;
        }
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeSubscriptionTerms(finsky.protos.Common.SubscriptionTerms value) {
        value.getClass();
    if (subscriptionTerms_ != null &&
            subscriptionTerms_ != finsky.protos.Common.SubscriptionTerms.getDefaultInstance()) {
          subscriptionTerms_ =
            finsky.protos.Common.SubscriptionTerms.newBuilder(subscriptionTerms_).mergeFrom(value).buildPartial();
        } else {
          subscriptionTerms_ = value;
        }
        bitField0_ |= 0x00000200;
      }
      /**
       * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
       */
      private void clearSubscriptionTerms() {  subscriptionTerms_ = null;
        bitField0_ = (bitField0_ & ~0x00000200);
      }
  
      public static final int FORMATTEDNAME_FIELD_NUMBER = 13;
      private java.lang.String formattedName_;
      /**
       * <code>optional string formattedName = 13;</code>
       * @return Whether the formattedName field is set.
       */
      @java.lang.Override
      public boolean hasFormattedName() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string formattedName = 13;</code>
       * @return The formattedName.
       */
      @java.lang.Override
      public java.lang.String getFormattedName() {
        return formattedName_;
      }
      /**
       * <code>optional string formattedName = 13;</code>
       * @return The bytes for formattedName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFormattedNameBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(formattedName_);
      }
      /**
       * <code>optional string formattedName = 13;</code>
       * @param value The formattedName to set.
       */
      private void setFormattedName(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000400;
        formattedName_ = value;
      }
      /**
       * <code>optional string formattedName = 13;</code>
       */
      private void clearFormattedName() {
        bitField0_ = (bitField0_ & ~0x00000400);
        formattedName_ = getDefaultInstance().getFormattedName();
      }
      /**
       * <code>optional string formattedName = 13;</code>
       * @param value The bytes for formattedName to set.
       */
      private void setFormattedNameBytes(
          com.google.protobuf.ByteString value) {
        formattedName_ = value.toStringUtf8();
        bitField0_ |= 0x00000400;
      }
  
      public static final int FORMATTEDDESCRIPTION_FIELD_NUMBER = 14;
      private java.lang.String formattedDescription_;
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return Whether the formattedDescription field is set.
       */
      @java.lang.Override
      public boolean hasFormattedDescription() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return The formattedDescription.
       */
      @java.lang.Override
      public java.lang.String getFormattedDescription() {
        return formattedDescription_;
      }
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @return The bytes for formattedDescription.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFormattedDescriptionBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(formattedDescription_);
      }
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @param value The formattedDescription to set.
       */
      private void setFormattedDescription(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000800;
        formattedDescription_ = value;
      }
      /**
       * <code>optional string formattedDescription = 14;</code>
       */
      private void clearFormattedDescription() {
        bitField0_ = (bitField0_ & ~0x00000800);
        formattedDescription_ = getDefaultInstance().getFormattedDescription();
      }
      /**
       * <code>optional string formattedDescription = 14;</code>
       * @param value The bytes for formattedDescription to set.
       */
      private void setFormattedDescriptionBytes(
          com.google.protobuf.ByteString value) {
        formattedDescription_ = value.toStringUtf8();
        bitField0_ |= 0x00000800;
      }
  
      public static finsky.protos.Common.Offer parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Offer parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Offer parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Offer parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Offer parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.Offer parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.Offer parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.Offer parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.Offer parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.Offer parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.Offer parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.Offer parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.Offer prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.Offer}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.Offer, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.Offer)
          finsky.protos.Common.OfferOrBuilder {
        // Construct using finsky.protos.Common.Offer.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int64 micros = 1;</code>
         * @return Whether the micros field is set.
         */
        @java.lang.Override
        public boolean hasMicros() {
          return instance.hasMicros();
        }
        /**
         * <code>optional int64 micros = 1;</code>
         * @return The micros.
         */
        @java.lang.Override
        public long getMicros() {
          return instance.getMicros();
        }
        /**
         * <code>optional int64 micros = 1;</code>
         * @param value The micros to set.
         * @return This builder for chaining.
         */
        public Builder setMicros(long value) {
          copyOnWrite();
          instance.setMicros(value);
          return this;
        }
        /**
         * <code>optional int64 micros = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearMicros() {
          copyOnWrite();
          instance.clearMicros();
          return this;
        }
  
        /**
         * <code>optional string currencyCode = 2;</code>
         * @return Whether the currencyCode field is set.
         */
        @java.lang.Override
        public boolean hasCurrencyCode() {
          return instance.hasCurrencyCode();
        }
        /**
         * <code>optional string currencyCode = 2;</code>
         * @return The currencyCode.
         */
        @java.lang.Override
        public java.lang.String getCurrencyCode() {
          return instance.getCurrencyCode();
        }
        /**
         * <code>optional string currencyCode = 2;</code>
         * @return The bytes for currencyCode.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getCurrencyCodeBytes() {
          return instance.getCurrencyCodeBytes();
        }
        /**
         * <code>optional string currencyCode = 2;</code>
         * @param value The currencyCode to set.
         * @return This builder for chaining.
         */
        public Builder setCurrencyCode(
            java.lang.String value) {
          copyOnWrite();
          instance.setCurrencyCode(value);
          return this;
        }
        /**
         * <code>optional string currencyCode = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearCurrencyCode() {
          copyOnWrite();
          instance.clearCurrencyCode();
          return this;
        }
        /**
         * <code>optional string currencyCode = 2;</code>
         * @param value The bytes for currencyCode to set.
         * @return This builder for chaining.
         */
        public Builder setCurrencyCodeBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setCurrencyCodeBytes(value);
          return this;
        }
  
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @return Whether the formattedAmount field is set.
         */
        @java.lang.Override
        public boolean hasFormattedAmount() {
          return instance.hasFormattedAmount();
        }
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @return The formattedAmount.
         */
        @java.lang.Override
        public java.lang.String getFormattedAmount() {
          return instance.getFormattedAmount();
        }
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @return The bytes for formattedAmount.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getFormattedAmountBytes() {
          return instance.getFormattedAmountBytes();
        }
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @param value The formattedAmount to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedAmount(
            java.lang.String value) {
          copyOnWrite();
          instance.setFormattedAmount(value);
          return this;
        }
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearFormattedAmount() {
          copyOnWrite();
          instance.clearFormattedAmount();
          return this;
        }
        /**
         * <code>optional string formattedAmount = 3;</code>
         * @param value The bytes for formattedAmount to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedAmountBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setFormattedAmountBytes(value);
          return this;
        }
  
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        @java.lang.Override
        public java.util.List<finsky.protos.Common.Offer> getConvertedPriceList() {
          return java.util.Collections.unmodifiableList(
              instance.getConvertedPriceList());
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        @java.lang.Override
        public int getConvertedPriceCount() {
          return instance.getConvertedPriceCount();
        }/**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.Offer getConvertedPrice(int index) {
          return instance.getConvertedPrice(index);
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder setConvertedPrice(
            int index, finsky.protos.Common.Offer value) {
          copyOnWrite();
          instance.setConvertedPrice(index, value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder setConvertedPrice(
            int index, finsky.protos.Common.Offer.Builder builderForValue) {
          copyOnWrite();
          instance.setConvertedPrice(index,
              builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder addConvertedPrice(finsky.protos.Common.Offer value) {
          copyOnWrite();
          instance.addConvertedPrice(value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder addConvertedPrice(
            int index, finsky.protos.Common.Offer value) {
          copyOnWrite();
          instance.addConvertedPrice(index, value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder addConvertedPrice(
            finsky.protos.Common.Offer.Builder builderForValue) {
          copyOnWrite();
          instance.addConvertedPrice(builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder addConvertedPrice(
            int index, finsky.protos.Common.Offer.Builder builderForValue) {
          copyOnWrite();
          instance.addConvertedPrice(index,
              builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder addAllConvertedPrice(
            java.lang.Iterable<? extends finsky.protos.Common.Offer> values) {
          copyOnWrite();
          instance.addAllConvertedPrice(values);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder clearConvertedPrice() {
          copyOnWrite();
          instance.clearConvertedPrice();
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.Offer convertedPrice = 4;</code>
         */
        public Builder removeConvertedPrice(int index) {
          copyOnWrite();
          instance.removeConvertedPrice(index);
          return this;
        }
  
        /**
         * <code>optional bool checkoutFlowRequired = 5;</code>
         * @return Whether the checkoutFlowRequired field is set.
         */
        @java.lang.Override
        public boolean hasCheckoutFlowRequired() {
          return instance.hasCheckoutFlowRequired();
        }
        /**
         * <code>optional bool checkoutFlowRequired = 5;</code>
         * @return The checkoutFlowRequired.
         */
        @java.lang.Override
        public boolean getCheckoutFlowRequired() {
          return instance.getCheckoutFlowRequired();
        }
        /**
         * <code>optional bool checkoutFlowRequired = 5;</code>
         * @param value The checkoutFlowRequired to set.
         * @return This builder for chaining.
         */
        public Builder setCheckoutFlowRequired(boolean value) {
          copyOnWrite();
          instance.setCheckoutFlowRequired(value);
          return this;
        }
        /**
         * <code>optional bool checkoutFlowRequired = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearCheckoutFlowRequired() {
          copyOnWrite();
          instance.clearCheckoutFlowRequired();
          return this;
        }
  
        /**
         * <code>optional int64 fullPriceMicros = 6;</code>
         * @return Whether the fullPriceMicros field is set.
         */
        @java.lang.Override
        public boolean hasFullPriceMicros() {
          return instance.hasFullPriceMicros();
        }
        /**
         * <code>optional int64 fullPriceMicros = 6;</code>
         * @return The fullPriceMicros.
         */
        @java.lang.Override
        public long getFullPriceMicros() {
          return instance.getFullPriceMicros();
        }
        /**
         * <code>optional int64 fullPriceMicros = 6;</code>
         * @param value The fullPriceMicros to set.
         * @return This builder for chaining.
         */
        public Builder setFullPriceMicros(long value) {
          copyOnWrite();
          instance.setFullPriceMicros(value);
          return this;
        }
        /**
         * <code>optional int64 fullPriceMicros = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearFullPriceMicros() {
          copyOnWrite();
          instance.clearFullPriceMicros();
          return this;
        }
  
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @return Whether the formattedFullAmount field is set.
         */
        @java.lang.Override
        public boolean hasFormattedFullAmount() {
          return instance.hasFormattedFullAmount();
        }
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @return The formattedFullAmount.
         */
        @java.lang.Override
        public java.lang.String getFormattedFullAmount() {
          return instance.getFormattedFullAmount();
        }
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @return The bytes for formattedFullAmount.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getFormattedFullAmountBytes() {
          return instance.getFormattedFullAmountBytes();
        }
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @param value The formattedFullAmount to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedFullAmount(
            java.lang.String value) {
          copyOnWrite();
          instance.setFormattedFullAmount(value);
          return this;
        }
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearFormattedFullAmount() {
          copyOnWrite();
          instance.clearFormattedFullAmount();
          return this;
        }
        /**
         * <code>optional string formattedFullAmount = 7;</code>
         * @param value The bytes for formattedFullAmount to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedFullAmountBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setFormattedFullAmountBytes(value);
          return this;
        }
  
        /**
         * <code>optional int32 offerType = 8;</code>
         * @return Whether the offerType field is set.
         */
        @java.lang.Override
        public boolean hasOfferType() {
          return instance.hasOfferType();
        }
        /**
         * <code>optional int32 offerType = 8;</code>
         * @return The offerType.
         */
        @java.lang.Override
        public int getOfferType() {
          return instance.getOfferType();
        }
        /**
         * <code>optional int32 offerType = 8;</code>
         * @param value The offerType to set.
         * @return This builder for chaining.
         */
        public Builder setOfferType(int value) {
          copyOnWrite();
          instance.setOfferType(value);
          return this;
        }
        /**
         * <code>optional int32 offerType = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearOfferType() {
          copyOnWrite();
          instance.clearOfferType();
          return this;
        }
  
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        @java.lang.Override
        public boolean hasRentalTerms() {
          return instance.hasRentalTerms();
        }
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.RentalTerms getRentalTerms() {
          return instance.getRentalTerms();
        }
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        public Builder setRentalTerms(finsky.protos.Common.RentalTerms value) {
          copyOnWrite();
          instance.setRentalTerms(value);
          return this;
          }
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        public Builder setRentalTerms(
            finsky.protos.Common.RentalTerms.Builder builderForValue) {
          copyOnWrite();
          instance.setRentalTerms(builderForValue.build());
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        public Builder mergeRentalTerms(finsky.protos.Common.RentalTerms value) {
          copyOnWrite();
          instance.mergeRentalTerms(value);
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.RentalTerms rentalTerms = 9;</code>
         */
        public Builder clearRentalTerms() {  copyOnWrite();
          instance.clearRentalTerms();
          return this;
        }
  
        /**
         * <code>optional int64 onSaleDate = 10;</code>
         * @return Whether the onSaleDate field is set.
         */
        @java.lang.Override
        public boolean hasOnSaleDate() {
          return instance.hasOnSaleDate();
        }
        /**
         * <code>optional int64 onSaleDate = 10;</code>
         * @return The onSaleDate.
         */
        @java.lang.Override
        public long getOnSaleDate() {
          return instance.getOnSaleDate();
        }
        /**
         * <code>optional int64 onSaleDate = 10;</code>
         * @param value The onSaleDate to set.
         * @return This builder for chaining.
         */
        public Builder setOnSaleDate(long value) {
          copyOnWrite();
          instance.setOnSaleDate(value);
          return this;
        }
        /**
         * <code>optional int64 onSaleDate = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearOnSaleDate() {
          copyOnWrite();
          instance.clearOnSaleDate();
          return this;
        }
  
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @return A list containing the promotionLabel.
         */
        @java.lang.Override
        public java.util.List<java.lang.String>
            getPromotionLabelList() {
          return java.util.Collections.unmodifiableList(
              instance.getPromotionLabelList());
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @return The count of promotionLabel.
         */
        @java.lang.Override
        public int getPromotionLabelCount() {
          return instance.getPromotionLabelCount();
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param index The index of the element to return.
         * @return The promotionLabel at the given index.
         */
        @java.lang.Override
        public java.lang.String getPromotionLabel(int index) {
          return instance.getPromotionLabel(index);
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param index The index of the value to return.
         * @return The bytes of the promotionLabel at the given index.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getPromotionLabelBytes(int index) {
          return instance.getPromotionLabelBytes(index);
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param index The index to set the value at.
         * @param value The promotionLabel to set.
         * @return This builder for chaining.
         */
        public Builder setPromotionLabel(
            int index, java.lang.String value) {
          copyOnWrite();
          instance.setPromotionLabel(index, value);
          return this;
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param value The promotionLabel to add.
         * @return This builder for chaining.
         */
        public Builder addPromotionLabel(
            java.lang.String value) {
          copyOnWrite();
          instance.addPromotionLabel(value);
          return this;
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param values The promotionLabel to add.
         * @return This builder for chaining.
         */
        public Builder addAllPromotionLabel(
            java.lang.Iterable<java.lang.String> values) {
          copyOnWrite();
          instance.addAllPromotionLabel(values);
          return this;
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearPromotionLabel() {
          copyOnWrite();
          instance.clearPromotionLabel();
          return this;
        }
        /**
         * <code>repeated string promotionLabel = 11;</code>
         * @param value The bytes of the promotionLabel to add.
         * @return This builder for chaining.
         */
        public Builder addPromotionLabelBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.addPromotionLabelBytes(value);
          return this;
        }
  
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        @java.lang.Override
        public boolean hasSubscriptionTerms() {
          return instance.hasSubscriptionTerms();
        }
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.SubscriptionTerms getSubscriptionTerms() {
          return instance.getSubscriptionTerms();
        }
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        public Builder setSubscriptionTerms(finsky.protos.Common.SubscriptionTerms value) {
          copyOnWrite();
          instance.setSubscriptionTerms(value);
          return this;
          }
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        public Builder setSubscriptionTerms(
            finsky.protos.Common.SubscriptionTerms.Builder builderForValue) {
          copyOnWrite();
          instance.setSubscriptionTerms(builderForValue.build());
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        public Builder mergeSubscriptionTerms(finsky.protos.Common.SubscriptionTerms value) {
          copyOnWrite();
          instance.mergeSubscriptionTerms(value);
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.SubscriptionTerms subscriptionTerms = 12;</code>
         */
        public Builder clearSubscriptionTerms() {  copyOnWrite();
          instance.clearSubscriptionTerms();
          return this;
        }
  
        /**
         * <code>optional string formattedName = 13;</code>
         * @return Whether the formattedName field is set.
         */
        @java.lang.Override
        public boolean hasFormattedName() {
          return instance.hasFormattedName();
        }
        /**
         * <code>optional string formattedName = 13;</code>
         * @return The formattedName.
         */
        @java.lang.Override
        public java.lang.String getFormattedName() {
          return instance.getFormattedName();
        }
        /**
         * <code>optional string formattedName = 13;</code>
         * @return The bytes for formattedName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getFormattedNameBytes() {
          return instance.getFormattedNameBytes();
        }
        /**
         * <code>optional string formattedName = 13;</code>
         * @param value The formattedName to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedName(
            java.lang.String value) {
          copyOnWrite();
          instance.setFormattedName(value);
          return this;
        }
        /**
         * <code>optional string formattedName = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearFormattedName() {
          copyOnWrite();
          instance.clearFormattedName();
          return this;
        }
        /**
         * <code>optional string formattedName = 13;</code>
         * @param value The bytes for formattedName to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedNameBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setFormattedNameBytes(value);
          return this;
        }
  
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @return Whether the formattedDescription field is set.
         */
        @java.lang.Override
        public boolean hasFormattedDescription() {
          return instance.hasFormattedDescription();
        }
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @return The formattedDescription.
         */
        @java.lang.Override
        public java.lang.String getFormattedDescription() {
          return instance.getFormattedDescription();
        }
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @return The bytes for formattedDescription.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getFormattedDescriptionBytes() {
          return instance.getFormattedDescriptionBytes();
        }
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @param value The formattedDescription to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedDescription(
            java.lang.String value) {
          copyOnWrite();
          instance.setFormattedDescription(value);
          return this;
        }
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @return This builder for chaining.
         */
        public Builder clearFormattedDescription() {
          copyOnWrite();
          instance.clearFormattedDescription();
          return this;
        }
        /**
         * <code>optional string formattedDescription = 14;</code>
         * @param value The bytes for formattedDescription to set.
         * @return This builder for chaining.
         */
        public Builder setFormattedDescriptionBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setFormattedDescriptionBytes(value);
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.Offer)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.Offer();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "micros_",
                "currencyCode_",
                "formattedAmount_",
                "convertedPrice_",
                finsky.protos.Common.Offer.class,
                "checkoutFlowRequired_",
                "fullPriceMicros_",
                "formattedFullAmount_",
                "offerType_",
                "rentalTerms_",
                "onSaleDate_",
                "promotionLabel_",
                "subscriptionTerms_",
                "formattedName_",
                "formattedDescription_",
              };
              java.lang.String info =
                  "\u0001\u000e\u0000\u0001\u0001\u000e\u000e\u0000\u0002\u0000\u0001\u1002\u0000\u0002" +
                  "\u1008\u0001\u0003\u1008\u0002\u0004\u001b\u0005\u1007\u0003\u0006\u1002\u0004\u0007" +
                  "\u1008\u0005\b\u1004\u0006\t\u1009\u0007\n\u1002\b\u000b\u001a\f\u1009\t\r\u1008" +
                  "\n\u000e\u1008\u000b";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.Offer> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.Offer.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.Offer>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.Offer)
      private static final finsky.protos.Common.Offer DEFAULT_INSTANCE;
      static {
        Offer defaultInstance = new Offer();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Offer.class, defaultInstance);
      }
  
      public static finsky.protos.Common.Offer getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<Offer> PARSER;
  
      public static com.google.protobuf.Parser<Offer> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface RentalTermsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.RentalTerms)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       * @return Whether the grantPeriodSeconds field is set.
       */
      boolean hasGrantPeriodSeconds();
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       * @return The grantPeriodSeconds.
       */
      int getGrantPeriodSeconds();
  
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       * @return Whether the activatePeriodSeconds field is set.
       */
      boolean hasActivatePeriodSeconds();
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       * @return The activatePeriodSeconds.
       */
      int getActivatePeriodSeconds();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.RentalTerms}
     */
    public  static final class RentalTerms extends
        com.google.protobuf.GeneratedMessageLite<
            RentalTerms, RentalTerms.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.RentalTerms)
        RentalTermsOrBuilder {
      private RentalTerms() {
      }
      private int bitField0_;
      public static final int GRANTPERIODSECONDS_FIELD_NUMBER = 1;
      private int grantPeriodSeconds_;
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       * @return Whether the grantPeriodSeconds field is set.
       */
      @java.lang.Override
      public boolean hasGrantPeriodSeconds() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       * @return The grantPeriodSeconds.
       */
      @java.lang.Override
      public int getGrantPeriodSeconds() {
        return grantPeriodSeconds_;
      }
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       * @param value The grantPeriodSeconds to set.
       */
      private void setGrantPeriodSeconds(int value) {
        bitField0_ |= 0x00000001;
        grantPeriodSeconds_ = value;
      }
      /**
       * <code>optional int32 grantPeriodSeconds = 1;</code>
       */
      private void clearGrantPeriodSeconds() {
        bitField0_ = (bitField0_ & ~0x00000001);
        grantPeriodSeconds_ = 0;
      }
  
      public static final int ACTIVATEPERIODSECONDS_FIELD_NUMBER = 2;
      private int activatePeriodSeconds_;
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       * @return Whether the activatePeriodSeconds field is set.
       */
      @java.lang.Override
      public boolean hasActivatePeriodSeconds() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       * @return The activatePeriodSeconds.
       */
      @java.lang.Override
      public int getActivatePeriodSeconds() {
        return activatePeriodSeconds_;
      }
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       * @param value The activatePeriodSeconds to set.
       */
      private void setActivatePeriodSeconds(int value) {
        bitField0_ |= 0x00000002;
        activatePeriodSeconds_ = value;
      }
      /**
       * <code>optional int32 activatePeriodSeconds = 2;</code>
       */
      private void clearActivatePeriodSeconds() {
        bitField0_ = (bitField0_ & ~0x00000002);
        activatePeriodSeconds_ = 0;
      }
  
      public static finsky.protos.Common.RentalTerms parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.RentalTerms parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.RentalTerms parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.RentalTerms parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.RentalTerms prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.RentalTerms}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.RentalTerms, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.RentalTerms)
          finsky.protos.Common.RentalTermsOrBuilder {
        // Construct using finsky.protos.Common.RentalTerms.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int32 grantPeriodSeconds = 1;</code>
         * @return Whether the grantPeriodSeconds field is set.
         */
        @java.lang.Override
        public boolean hasGrantPeriodSeconds() {
          return instance.hasGrantPeriodSeconds();
        }
        /**
         * <code>optional int32 grantPeriodSeconds = 1;</code>
         * @return The grantPeriodSeconds.
         */
        @java.lang.Override
        public int getGrantPeriodSeconds() {
          return instance.getGrantPeriodSeconds();
        }
        /**
         * <code>optional int32 grantPeriodSeconds = 1;</code>
         * @param value The grantPeriodSeconds to set.
         * @return This builder for chaining.
         */
        public Builder setGrantPeriodSeconds(int value) {
          copyOnWrite();
          instance.setGrantPeriodSeconds(value);
          return this;
        }
        /**
         * <code>optional int32 grantPeriodSeconds = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearGrantPeriodSeconds() {
          copyOnWrite();
          instance.clearGrantPeriodSeconds();
          return this;
        }
  
        /**
         * <code>optional int32 activatePeriodSeconds = 2;</code>
         * @return Whether the activatePeriodSeconds field is set.
         */
        @java.lang.Override
        public boolean hasActivatePeriodSeconds() {
          return instance.hasActivatePeriodSeconds();
        }
        /**
         * <code>optional int32 activatePeriodSeconds = 2;</code>
         * @return The activatePeriodSeconds.
         */
        @java.lang.Override
        public int getActivatePeriodSeconds() {
          return instance.getActivatePeriodSeconds();
        }
        /**
         * <code>optional int32 activatePeriodSeconds = 2;</code>
         * @param value The activatePeriodSeconds to set.
         * @return This builder for chaining.
         */
        public Builder setActivatePeriodSeconds(int value) {
          copyOnWrite();
          instance.setActivatePeriodSeconds(value);
          return this;
        }
        /**
         * <code>optional int32 activatePeriodSeconds = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearActivatePeriodSeconds() {
          copyOnWrite();
          instance.clearActivatePeriodSeconds();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.RentalTerms)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.RentalTerms();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "grantPeriodSeconds_",
                "activatePeriodSeconds_",
              };
              java.lang.String info =
                  "\u0001\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u1004\u0000\u0002" +
                  "\u1004\u0001";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.RentalTerms> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.RentalTerms.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.RentalTerms>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.RentalTerms)
      private static final finsky.protos.Common.RentalTerms DEFAULT_INSTANCE;
      static {
        RentalTerms defaultInstance = new RentalTerms();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          RentalTerms.class, defaultInstance);
      }
  
      public static finsky.protos.Common.RentalTerms getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<RentalTerms> PARSER;
  
      public static com.google.protobuf.Parser<RentalTerms> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface SubscriptionTermsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.SubscriptionTerms)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       * @return Whether the recurringPeriod field is set.
       */
      boolean hasRecurringPeriod();
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       * @return The recurringPeriod.
       */
      finsky.protos.Common.TimePeriod getRecurringPeriod();
  
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       * @return Whether the trialPeriod field is set.
       */
      boolean hasTrialPeriod();
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       * @return The trialPeriod.
       */
      finsky.protos.Common.TimePeriod getTrialPeriod();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.SubscriptionTerms}
     */
    public  static final class SubscriptionTerms extends
        com.google.protobuf.GeneratedMessageLite<
            SubscriptionTerms, SubscriptionTerms.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.SubscriptionTerms)
        SubscriptionTermsOrBuilder {
      private SubscriptionTerms() {
      }
      private int bitField0_;
      public static final int RECURRINGPERIOD_FIELD_NUMBER = 1;
      private finsky.protos.Common.TimePeriod recurringPeriod_;
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       */
      @java.lang.Override
      public boolean hasRecurringPeriod() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.TimePeriod getRecurringPeriod() {
        return recurringPeriod_ == null ? finsky.protos.Common.TimePeriod.getDefaultInstance() : recurringPeriod_;
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       */
      private void setRecurringPeriod(finsky.protos.Common.TimePeriod value) {
        value.getClass();
    recurringPeriod_ = value;
        bitField0_ |= 0x00000001;
        }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeRecurringPeriod(finsky.protos.Common.TimePeriod value) {
        value.getClass();
    if (recurringPeriod_ != null &&
            recurringPeriod_ != finsky.protos.Common.TimePeriod.getDefaultInstance()) {
          recurringPeriod_ =
            finsky.protos.Common.TimePeriod.newBuilder(recurringPeriod_).mergeFrom(value).buildPartial();
        } else {
          recurringPeriod_ = value;
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
       */
      private void clearRecurringPeriod() {  recurringPeriod_ = null;
        bitField0_ = (bitField0_ & ~0x00000001);
      }
  
      public static final int TRIALPERIOD_FIELD_NUMBER = 2;
      private finsky.protos.Common.TimePeriod trialPeriod_;
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       */
      @java.lang.Override
      public boolean hasTrialPeriod() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.TimePeriod getTrialPeriod() {
        return trialPeriod_ == null ? finsky.protos.Common.TimePeriod.getDefaultInstance() : trialPeriod_;
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       */
      private void setTrialPeriod(finsky.protos.Common.TimePeriod value) {
        value.getClass();
    trialPeriod_ = value;
        bitField0_ |= 0x00000002;
        }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeTrialPeriod(finsky.protos.Common.TimePeriod value) {
        value.getClass();
    if (trialPeriod_ != null &&
            trialPeriod_ != finsky.protos.Common.TimePeriod.getDefaultInstance()) {
          trialPeriod_ =
            finsky.protos.Common.TimePeriod.newBuilder(trialPeriod_).mergeFrom(value).buildPartial();
        } else {
          trialPeriod_ = value;
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
       */
      private void clearTrialPeriod() {  trialPeriod_ = null;
        bitField0_ = (bitField0_ & ~0x00000002);
      }
  
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.SubscriptionTerms parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.SubscriptionTerms parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.SubscriptionTerms parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.SubscriptionTerms prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.SubscriptionTerms}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.SubscriptionTerms, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.SubscriptionTerms)
          finsky.protos.Common.SubscriptionTermsOrBuilder {
        // Construct using finsky.protos.Common.SubscriptionTerms.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        @java.lang.Override
        public boolean hasRecurringPeriod() {
          return instance.hasRecurringPeriod();
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.TimePeriod getRecurringPeriod() {
          return instance.getRecurringPeriod();
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        public Builder setRecurringPeriod(finsky.protos.Common.TimePeriod value) {
          copyOnWrite();
          instance.setRecurringPeriod(value);
          return this;
          }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        public Builder setRecurringPeriod(
            finsky.protos.Common.TimePeriod.Builder builderForValue) {
          copyOnWrite();
          instance.setRecurringPeriod(builderForValue.build());
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        public Builder mergeRecurringPeriod(finsky.protos.Common.TimePeriod value) {
          copyOnWrite();
          instance.mergeRecurringPeriod(value);
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod recurringPeriod = 1;</code>
         */
        public Builder clearRecurringPeriod() {  copyOnWrite();
          instance.clearRecurringPeriod();
          return this;
        }
  
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        @java.lang.Override
        public boolean hasTrialPeriod() {
          return instance.hasTrialPeriod();
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.TimePeriod getTrialPeriod() {
          return instance.getTrialPeriod();
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        public Builder setTrialPeriod(finsky.protos.Common.TimePeriod value) {
          copyOnWrite();
          instance.setTrialPeriod(value);
          return this;
          }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        public Builder setTrialPeriod(
            finsky.protos.Common.TimePeriod.Builder builderForValue) {
          copyOnWrite();
          instance.setTrialPeriod(builderForValue.build());
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        public Builder mergeTrialPeriod(finsky.protos.Common.TimePeriod value) {
          copyOnWrite();
          instance.mergeTrialPeriod(value);
          return this;
        }
        /**
         * <code>optional .finsky.protos.Common.TimePeriod trialPeriod = 2;</code>
         */
        public Builder clearTrialPeriod() {  copyOnWrite();
          instance.clearTrialPeriod();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.SubscriptionTerms)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.SubscriptionTerms();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "recurringPeriod_",
                "trialPeriod_",
              };
              java.lang.String info =
                  "\u0001\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u1009\u0000\u0002" +
                  "\u1009\u0001";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.SubscriptionTerms> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.SubscriptionTerms.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.SubscriptionTerms>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.SubscriptionTerms)
      private static final finsky.protos.Common.SubscriptionTerms DEFAULT_INSTANCE;
      static {
        SubscriptionTerms defaultInstance = new SubscriptionTerms();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          SubscriptionTerms.class, defaultInstance);
      }
  
      public static finsky.protos.Common.SubscriptionTerms getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<SubscriptionTerms> PARSER;
  
      public static com.google.protobuf.Parser<SubscriptionTerms> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface TimePeriodOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.TimePeriod)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int32 unit = 1;</code>
       * @return Whether the unit field is set.
       */
      boolean hasUnit();
      /**
       * <code>optional int32 unit = 1;</code>
       * @return The unit.
       */
      int getUnit();
  
      /**
       * <code>optional int32 count = 2;</code>
       * @return Whether the count field is set.
       */
      boolean hasCount();
      /**
       * <code>optional int32 count = 2;</code>
       * @return The count.
       */
      int getCount();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.TimePeriod}
     */
    public  static final class TimePeriod extends
        com.google.protobuf.GeneratedMessageLite<
            TimePeriod, TimePeriod.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.TimePeriod)
        TimePeriodOrBuilder {
      private TimePeriod() {
      }
      private int bitField0_;
      public static final int UNIT_FIELD_NUMBER = 1;
      private int unit_;
      /**
       * <code>optional int32 unit = 1;</code>
       * @return Whether the unit field is set.
       */
      @java.lang.Override
      public boolean hasUnit() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 unit = 1;</code>
       * @return The unit.
       */
      @java.lang.Override
      public int getUnit() {
        return unit_;
      }
      /**
       * <code>optional int32 unit = 1;</code>
       * @param value The unit to set.
       */
      private void setUnit(int value) {
        bitField0_ |= 0x00000001;
        unit_ = value;
      }
      /**
       * <code>optional int32 unit = 1;</code>
       */
      private void clearUnit() {
        bitField0_ = (bitField0_ & ~0x00000001);
        unit_ = 0;
      }
  
      public static final int COUNT_FIELD_NUMBER = 2;
      private int count_;
      /**
       * <code>optional int32 count = 2;</code>
       * @return Whether the count field is set.
       */
      @java.lang.Override
      public boolean hasCount() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 count = 2;</code>
       * @return The count.
       */
      @java.lang.Override
      public int getCount() {
        return count_;
      }
      /**
       * <code>optional int32 count = 2;</code>
       * @param value The count to set.
       */
      private void setCount(int value) {
        bitField0_ |= 0x00000002;
        count_ = value;
      }
      /**
       * <code>optional int32 count = 2;</code>
       */
      private void clearCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        count_ = 0;
      }
  
      public static finsky.protos.Common.TimePeriod parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.TimePeriod parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.TimePeriod parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.TimePeriod parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.TimePeriod prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.TimePeriod}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.TimePeriod, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.TimePeriod)
          finsky.protos.Common.TimePeriodOrBuilder {
        // Construct using finsky.protos.Common.TimePeriod.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int32 unit = 1;</code>
         * @return Whether the unit field is set.
         */
        @java.lang.Override
        public boolean hasUnit() {
          return instance.hasUnit();
        }
        /**
         * <code>optional int32 unit = 1;</code>
         * @return The unit.
         */
        @java.lang.Override
        public int getUnit() {
          return instance.getUnit();
        }
        /**
         * <code>optional int32 unit = 1;</code>
         * @param value The unit to set.
         * @return This builder for chaining.
         */
        public Builder setUnit(int value) {
          copyOnWrite();
          instance.setUnit(value);
          return this;
        }
        /**
         * <code>optional int32 unit = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearUnit() {
          copyOnWrite();
          instance.clearUnit();
          return this;
        }
  
        /**
         * <code>optional int32 count = 2;</code>
         * @return Whether the count field is set.
         */
        @java.lang.Override
        public boolean hasCount() {
          return instance.hasCount();
        }
        /**
         * <code>optional int32 count = 2;</code>
         * @return The count.
         */
        @java.lang.Override
        public int getCount() {
          return instance.getCount();
        }
        /**
         * <code>optional int32 count = 2;</code>
         * @param value The count to set.
         * @return This builder for chaining.
         */
        public Builder setCount(int value) {
          copyOnWrite();
          instance.setCount(value);
          return this;
        }
        /**
         * <code>optional int32 count = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearCount() {
          copyOnWrite();
          instance.clearCount();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.TimePeriod)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.TimePeriod();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "unit_",
                "count_",
              };
              java.lang.String info =
                  "\u0001\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u1004\u0000\u0002" +
                  "\u1004\u0001";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.TimePeriod> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.TimePeriod.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.TimePeriod>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.TimePeriod)
      private static final finsky.protos.Common.TimePeriod DEFAULT_INSTANCE;
      static {
        TimePeriod defaultInstance = new TimePeriod();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          TimePeriod.class, defaultInstance);
      }
  
      public static finsky.protos.Common.TimePeriod getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<TimePeriod> PARSER;
  
      public static com.google.protobuf.Parser<TimePeriod> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface PatchDetailsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.PatchDetails)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       * @return Whether the baseVersionCode field is set.
       */
      boolean hasBaseVersionCode();
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       * @return The baseVersionCode.
       */
      int getBaseVersionCode();
  
      /**
       * <code>optional int64 size = 2;</code>
       * @return Whether the size field is set.
       */
      boolean hasSize();
      /**
       * <code>optional int64 size = 2;</code>
       * @return The size.
       */
      long getSize();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.PatchDetails}
     */
    public  static final class PatchDetails extends
        com.google.protobuf.GeneratedMessageLite<
            PatchDetails, PatchDetails.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.PatchDetails)
        PatchDetailsOrBuilder {
      private PatchDetails() {
      }
      private int bitField0_;
      public static final int BASEVERSIONCODE_FIELD_NUMBER = 1;
      private int baseVersionCode_;
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       * @return Whether the baseVersionCode field is set.
       */
      @java.lang.Override
      public boolean hasBaseVersionCode() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       * @return The baseVersionCode.
       */
      @java.lang.Override
      public int getBaseVersionCode() {
        return baseVersionCode_;
      }
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       * @param value The baseVersionCode to set.
       */
      private void setBaseVersionCode(int value) {
        bitField0_ |= 0x00000001;
        baseVersionCode_ = value;
      }
      /**
       * <code>optional int32 baseVersionCode = 1;</code>
       */
      private void clearBaseVersionCode() {
        bitField0_ = (bitField0_ & ~0x00000001);
        baseVersionCode_ = 0;
      }
  
      public static final int SIZE_FIELD_NUMBER = 2;
      private long size_;
      /**
       * <code>optional int64 size = 2;</code>
       * @return Whether the size field is set.
       */
      @java.lang.Override
      public boolean hasSize() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int64 size = 2;</code>
       * @return The size.
       */
      @java.lang.Override
      public long getSize() {
        return size_;
      }
      /**
       * <code>optional int64 size = 2;</code>
       * @param value The size to set.
       */
      private void setSize(long value) {
        bitField0_ |= 0x00000002;
        size_ = value;
      }
      /**
       * <code>optional int64 size = 2;</code>
       */
      private void clearSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        size_ = 0L;
      }
  
      public static finsky.protos.Common.PatchDetails parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.PatchDetails parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.PatchDetails parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.PatchDetails parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.PatchDetails prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.PatchDetails}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.PatchDetails, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.PatchDetails)
          finsky.protos.Common.PatchDetailsOrBuilder {
        // Construct using finsky.protos.Common.PatchDetails.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int32 baseVersionCode = 1;</code>
         * @return Whether the baseVersionCode field is set.
         */
        @java.lang.Override
        public boolean hasBaseVersionCode() {
          return instance.hasBaseVersionCode();
        }
        /**
         * <code>optional int32 baseVersionCode = 1;</code>
         * @return The baseVersionCode.
         */
        @java.lang.Override
        public int getBaseVersionCode() {
          return instance.getBaseVersionCode();
        }
        /**
         * <code>optional int32 baseVersionCode = 1;</code>
         * @param value The baseVersionCode to set.
         * @return This builder for chaining.
         */
        public Builder setBaseVersionCode(int value) {
          copyOnWrite();
          instance.setBaseVersionCode(value);
          return this;
        }
        /**
         * <code>optional int32 baseVersionCode = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearBaseVersionCode() {
          copyOnWrite();
          instance.clearBaseVersionCode();
          return this;
        }
  
        /**
         * <code>optional int64 size = 2;</code>
         * @return Whether the size field is set.
         */
        @java.lang.Override
        public boolean hasSize() {
          return instance.hasSize();
        }
        /**
         * <code>optional int64 size = 2;</code>
         * @return The size.
         */
        @java.lang.Override
        public long getSize() {
          return instance.getSize();
        }
        /**
         * <code>optional int64 size = 2;</code>
         * @param value The size to set.
         * @return This builder for chaining.
         */
        public Builder setSize(long value) {
          copyOnWrite();
          instance.setSize(value);
          return this;
        }
        /**
         * <code>optional int64 size = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearSize() {
          copyOnWrite();
          instance.clearSize();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.PatchDetails)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.PatchDetails();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "baseVersionCode_",
                "size_",
              };
              java.lang.String info =
                  "\u0001\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u1004\u0000\u0002" +
                  "\u1002\u0001";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.PatchDetails> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.PatchDetails.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.PatchDetails>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.PatchDetails)
      private static final finsky.protos.Common.PatchDetails DEFAULT_INSTANCE;
      static {
        PatchDetails defaultInstance = new PatchDetails();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          PatchDetails.class, defaultInstance);
      }
  
      public static finsky.protos.Common.PatchDetails getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<PatchDetails> PARSER;
  
      public static com.google.protobuf.Parser<PatchDetails> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public interface FileMetadataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:finsky.protos.Common.FileMetadata)
        com.google.protobuf.MessageLiteOrBuilder {
  
      /**
       * <code>optional int32 fileType = 1;</code>
       * @return Whether the fileType field is set.
       */
      boolean hasFileType();
      /**
       * <code>optional int32 fileType = 1;</code>
       * @return The fileType.
       */
      int getFileType();
  
      /**
       * <code>optional int32 versionCode = 2;</code>
       * @return Whether the versionCode field is set.
       */
      boolean hasVersionCode();
      /**
       * <code>optional int32 versionCode = 2;</code>
       * @return The versionCode.
       */
      int getVersionCode();
  
      /**
       * <code>optional int64 size = 3;</code>
       * @return Whether the size field is set.
       */
      boolean hasSize();
      /**
       * <code>optional int64 size = 3;</code>
       * @return The size.
       */
      long getSize();
  
      /**
       * <code>optional string splitId = 4;</code>
       * @return Whether the splitId field is set.
       */
      boolean hasSplitId();
      /**
       * <code>optional string splitId = 4;</code>
       * @return The splitId.
       */
      java.lang.String getSplitId();
      /**
       * <code>optional string splitId = 4;</code>
       * @return The bytes for splitId.
       */
      com.google.protobuf.ByteString
          getSplitIdBytes();
  
      /**
       * <code>optional int64 compressedSize = 5;</code>
       * @return Whether the compressedSize field is set.
       */
      boolean hasCompressedSize();
      /**
       * <code>optional int64 compressedSize = 5;</code>
       * @return The compressedSize.
       */
      long getCompressedSize();
  
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      java.util.List<finsky.protos.Common.PatchDetails> 
          getPatchDetailsList();
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      finsky.protos.Common.PatchDetails getPatchDetails(int index);
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      int getPatchDetailsCount();
    }
    /**
     * Protobuf type {@code finsky.protos.Common.FileMetadata}
     */
    public  static final class FileMetadata extends
        com.google.protobuf.GeneratedMessageLite<
            FileMetadata, FileMetadata.Builder> implements
        // @@protoc_insertion_point(message_implements:finsky.protos.Common.FileMetadata)
        FileMetadataOrBuilder {
      private FileMetadata() {
        splitId_ = "";
        patchDetails_ = emptyProtobufList();
      }
      private int bitField0_;
      public static final int FILETYPE_FIELD_NUMBER = 1;
      private int fileType_;
      /**
       * <code>optional int32 fileType = 1;</code>
       * @return Whether the fileType field is set.
       */
      @java.lang.Override
      public boolean hasFileType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 fileType = 1;</code>
       * @return The fileType.
       */
      @java.lang.Override
      public int getFileType() {
        return fileType_;
      }
      /**
       * <code>optional int32 fileType = 1;</code>
       * @param value The fileType to set.
       */
      private void setFileType(int value) {
        bitField0_ |= 0x00000001;
        fileType_ = value;
      }
      /**
       * <code>optional int32 fileType = 1;</code>
       */
      private void clearFileType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fileType_ = 0;
      }
  
      public static final int VERSIONCODE_FIELD_NUMBER = 2;
      private int versionCode_;
      /**
       * <code>optional int32 versionCode = 2;</code>
       * @return Whether the versionCode field is set.
       */
      @java.lang.Override
      public boolean hasVersionCode() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 versionCode = 2;</code>
       * @return The versionCode.
       */
      @java.lang.Override
      public int getVersionCode() {
        return versionCode_;
      }
      /**
       * <code>optional int32 versionCode = 2;</code>
       * @param value The versionCode to set.
       */
      private void setVersionCode(int value) {
        bitField0_ |= 0x00000002;
        versionCode_ = value;
      }
      /**
       * <code>optional int32 versionCode = 2;</code>
       */
      private void clearVersionCode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        versionCode_ = 0;
      }
  
      public static final int SIZE_FIELD_NUMBER = 3;
      private long size_;
      /**
       * <code>optional int64 size = 3;</code>
       * @return Whether the size field is set.
       */
      @java.lang.Override
      public boolean hasSize() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int64 size = 3;</code>
       * @return The size.
       */
      @java.lang.Override
      public long getSize() {
        return size_;
      }
      /**
       * <code>optional int64 size = 3;</code>
       * @param value The size to set.
       */
      private void setSize(long value) {
        bitField0_ |= 0x00000004;
        size_ = value;
      }
      /**
       * <code>optional int64 size = 3;</code>
       */
      private void clearSize() {
        bitField0_ = (bitField0_ & ~0x00000004);
        size_ = 0L;
      }
  
      public static final int SPLITID_FIELD_NUMBER = 4;
      private java.lang.String splitId_;
      /**
       * <code>optional string splitId = 4;</code>
       * @return Whether the splitId field is set.
       */
      @java.lang.Override
      public boolean hasSplitId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string splitId = 4;</code>
       * @return The splitId.
       */
      @java.lang.Override
      public java.lang.String getSplitId() {
        return splitId_;
      }
      /**
       * <code>optional string splitId = 4;</code>
       * @return The bytes for splitId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSplitIdBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(splitId_);
      }
      /**
       * <code>optional string splitId = 4;</code>
       * @param value The splitId to set.
       */
      private void setSplitId(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
    bitField0_ |= 0x00000008;
        splitId_ = value;
      }
      /**
       * <code>optional string splitId = 4;</code>
       */
      private void clearSplitId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        splitId_ = getDefaultInstance().getSplitId();
      }
      /**
       * <code>optional string splitId = 4;</code>
       * @param value The bytes for splitId to set.
       */
      private void setSplitIdBytes(
          com.google.protobuf.ByteString value) {
        splitId_ = value.toStringUtf8();
        bitField0_ |= 0x00000008;
      }
  
      public static final int COMPRESSEDSIZE_FIELD_NUMBER = 5;
      private long compressedSize_;
      /**
       * <code>optional int64 compressedSize = 5;</code>
       * @return Whether the compressedSize field is set.
       */
      @java.lang.Override
      public boolean hasCompressedSize() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional int64 compressedSize = 5;</code>
       * @return The compressedSize.
       */
      @java.lang.Override
      public long getCompressedSize() {
        return compressedSize_;
      }
      /**
       * <code>optional int64 compressedSize = 5;</code>
       * @param value The compressedSize to set.
       */
      private void setCompressedSize(long value) {
        bitField0_ |= 0x00000010;
        compressedSize_ = value;
      }
      /**
       * <code>optional int64 compressedSize = 5;</code>
       */
      private void clearCompressedSize() {
        bitField0_ = (bitField0_ & ~0x00000010);
        compressedSize_ = 0L;
      }
  
      public static final int PATCHDETAILS_FIELD_NUMBER = 6;
      private com.google.protobuf.Internal.ProtobufList<finsky.protos.Common.PatchDetails> patchDetails_;
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      @java.lang.Override
      public java.util.List<finsky.protos.Common.PatchDetails> getPatchDetailsList() {
        return patchDetails_;
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      public java.util.List<? extends finsky.protos.Common.PatchDetailsOrBuilder> 
          getPatchDetailsOrBuilderList() {
        return patchDetails_;
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      @java.lang.Override
      public int getPatchDetailsCount() {
        return patchDetails_.size();
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      @java.lang.Override
      public finsky.protos.Common.PatchDetails getPatchDetails(int index) {
        return patchDetails_.get(index);
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      public finsky.protos.Common.PatchDetailsOrBuilder getPatchDetailsOrBuilder(
          int index) {
        return patchDetails_.get(index);
      }
      private void ensurePatchDetailsIsMutable() {
        com.google.protobuf.Internal.ProtobufList<finsky.protos.Common.PatchDetails> tmp = patchDetails_;
        if (!tmp.isModifiable()) {
          patchDetails_ =
              com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
         }
      }
  
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void setPatchDetails(
          int index, finsky.protos.Common.PatchDetails value) {
        value.getClass();
    ensurePatchDetailsIsMutable();
        patchDetails_.set(index, value);
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void addPatchDetails(finsky.protos.Common.PatchDetails value) {
        value.getClass();
    ensurePatchDetailsIsMutable();
        patchDetails_.add(value);
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void addPatchDetails(
          int index, finsky.protos.Common.PatchDetails value) {
        value.getClass();
    ensurePatchDetailsIsMutable();
        patchDetails_.add(index, value);
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void addAllPatchDetails(
          java.lang.Iterable<? extends finsky.protos.Common.PatchDetails> values) {
        ensurePatchDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.addAll(
            values, patchDetails_);
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void clearPatchDetails() {
        patchDetails_ = emptyProtobufList();
      }
      /**
       * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
       */
      private void removePatchDetails(int index) {
        ensurePatchDetailsIsMutable();
        patchDetails_.remove(index);
      }
  
      public static finsky.protos.Common.FileMetadata parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static finsky.protos.Common.FileMetadata parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }
  
      public static finsky.protos.Common.FileMetadata parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static finsky.protos.Common.FileMetadata parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }
  
      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(finsky.protos.Common.FileMetadata prototype) {
        return DEFAULT_INSTANCE.createBuilder(prototype);
      }
  
      /**
       * Protobuf type {@code finsky.protos.Common.FileMetadata}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            finsky.protos.Common.FileMetadata, Builder> implements
          // @@protoc_insertion_point(builder_implements:finsky.protos.Common.FileMetadata)
          finsky.protos.Common.FileMetadataOrBuilder {
        // Construct using finsky.protos.Common.FileMetadata.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }
  
  
        /**
         * <code>optional int32 fileType = 1;</code>
         * @return Whether the fileType field is set.
         */
        @java.lang.Override
        public boolean hasFileType() {
          return instance.hasFileType();
        }
        /**
         * <code>optional int32 fileType = 1;</code>
         * @return The fileType.
         */
        @java.lang.Override
        public int getFileType() {
          return instance.getFileType();
        }
        /**
         * <code>optional int32 fileType = 1;</code>
         * @param value The fileType to set.
         * @return This builder for chaining.
         */
        public Builder setFileType(int value) {
          copyOnWrite();
          instance.setFileType(value);
          return this;
        }
        /**
         * <code>optional int32 fileType = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearFileType() {
          copyOnWrite();
          instance.clearFileType();
          return this;
        }
  
        /**
         * <code>optional int32 versionCode = 2;</code>
         * @return Whether the versionCode field is set.
         */
        @java.lang.Override
        public boolean hasVersionCode() {
          return instance.hasVersionCode();
        }
        /**
         * <code>optional int32 versionCode = 2;</code>
         * @return The versionCode.
         */
        @java.lang.Override
        public int getVersionCode() {
          return instance.getVersionCode();
        }
        /**
         * <code>optional int32 versionCode = 2;</code>
         * @param value The versionCode to set.
         * @return This builder for chaining.
         */
        public Builder setVersionCode(int value) {
          copyOnWrite();
          instance.setVersionCode(value);
          return this;
        }
        /**
         * <code>optional int32 versionCode = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearVersionCode() {
          copyOnWrite();
          instance.clearVersionCode();
          return this;
        }
  
        /**
         * <code>optional int64 size = 3;</code>
         * @return Whether the size field is set.
         */
        @java.lang.Override
        public boolean hasSize() {
          return instance.hasSize();
        }
        /**
         * <code>optional int64 size = 3;</code>
         * @return The size.
         */
        @java.lang.Override
        public long getSize() {
          return instance.getSize();
        }
        /**
         * <code>optional int64 size = 3;</code>
         * @param value The size to set.
         * @return This builder for chaining.
         */
        public Builder setSize(long value) {
          copyOnWrite();
          instance.setSize(value);
          return this;
        }
        /**
         * <code>optional int64 size = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearSize() {
          copyOnWrite();
          instance.clearSize();
          return this;
        }
  
        /**
         * <code>optional string splitId = 4;</code>
         * @return Whether the splitId field is set.
         */
        @java.lang.Override
        public boolean hasSplitId() {
          return instance.hasSplitId();
        }
        /**
         * <code>optional string splitId = 4;</code>
         * @return The splitId.
         */
        @java.lang.Override
        public java.lang.String getSplitId() {
          return instance.getSplitId();
        }
        /**
         * <code>optional string splitId = 4;</code>
         * @return The bytes for splitId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getSplitIdBytes() {
          return instance.getSplitIdBytes();
        }
        /**
         * <code>optional string splitId = 4;</code>
         * @param value The splitId to set.
         * @return This builder for chaining.
         */
        public Builder setSplitId(
            java.lang.String value) {
          copyOnWrite();
          instance.setSplitId(value);
          return this;
        }
        /**
         * <code>optional string splitId = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearSplitId() {
          copyOnWrite();
          instance.clearSplitId();
          return this;
        }
        /**
         * <code>optional string splitId = 4;</code>
         * @param value The bytes for splitId to set.
         * @return This builder for chaining.
         */
        public Builder setSplitIdBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setSplitIdBytes(value);
          return this;
        }
  
        /**
         * <code>optional int64 compressedSize = 5;</code>
         * @return Whether the compressedSize field is set.
         */
        @java.lang.Override
        public boolean hasCompressedSize() {
          return instance.hasCompressedSize();
        }
        /**
         * <code>optional int64 compressedSize = 5;</code>
         * @return The compressedSize.
         */
        @java.lang.Override
        public long getCompressedSize() {
          return instance.getCompressedSize();
        }
        /**
         * <code>optional int64 compressedSize = 5;</code>
         * @param value The compressedSize to set.
         * @return This builder for chaining.
         */
        public Builder setCompressedSize(long value) {
          copyOnWrite();
          instance.setCompressedSize(value);
          return this;
        }
        /**
         * <code>optional int64 compressedSize = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearCompressedSize() {
          copyOnWrite();
          instance.clearCompressedSize();
          return this;
        }
  
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        @java.lang.Override
        public java.util.List<finsky.protos.Common.PatchDetails> getPatchDetailsList() {
          return java.util.Collections.unmodifiableList(
              instance.getPatchDetailsList());
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        @java.lang.Override
        public int getPatchDetailsCount() {
          return instance.getPatchDetailsCount();
        }/**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        @java.lang.Override
        public finsky.protos.Common.PatchDetails getPatchDetails(int index) {
          return instance.getPatchDetails(index);
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder setPatchDetails(
            int index, finsky.protos.Common.PatchDetails value) {
          copyOnWrite();
          instance.setPatchDetails(index, value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder setPatchDetails(
            int index, finsky.protos.Common.PatchDetails.Builder builderForValue) {
          copyOnWrite();
          instance.setPatchDetails(index,
              builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder addPatchDetails(finsky.protos.Common.PatchDetails value) {
          copyOnWrite();
          instance.addPatchDetails(value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder addPatchDetails(
            int index, finsky.protos.Common.PatchDetails value) {
          copyOnWrite();
          instance.addPatchDetails(index, value);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder addPatchDetails(
            finsky.protos.Common.PatchDetails.Builder builderForValue) {
          copyOnWrite();
          instance.addPatchDetails(builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder addPatchDetails(
            int index, finsky.protos.Common.PatchDetails.Builder builderForValue) {
          copyOnWrite();
          instance.addPatchDetails(index,
              builderForValue.build());
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder addAllPatchDetails(
            java.lang.Iterable<? extends finsky.protos.Common.PatchDetails> values) {
          copyOnWrite();
          instance.addAllPatchDetails(values);
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder clearPatchDetails() {
          copyOnWrite();
          instance.clearPatchDetails();
          return this;
        }
        /**
         * <code>repeated .finsky.protos.Common.PatchDetails patchDetails = 6;</code>
         */
        public Builder removePatchDetails(int index) {
          copyOnWrite();
          instance.removePatchDetails(index);
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:finsky.protos.Common.FileMetadata)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new finsky.protos.Common.FileMetadata();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "bitField0_",
                "fileType_",
                "versionCode_",
                "size_",
                "splitId_",
                "compressedSize_",
                "patchDetails_",
                finsky.protos.Common.PatchDetails.class,
              };
              java.lang.String info =
                  "\u0001\u0006\u0000\u0001\u0001\u0006\u0006\u0000\u0001\u0000\u0001\u1004\u0000\u0002" +
                  "\u1004\u0001\u0003\u1002\u0002\u0004\u1008\u0003\u0005\u1002\u0004\u0006\u001b";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<finsky.protos.Common.FileMetadata> parser = PARSER;
            if (parser == null) {
              synchronized (finsky.protos.Common.FileMetadata.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<finsky.protos.Common.FileMetadata>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }
  
  
      // @@protoc_insertion_point(class_scope:finsky.protos.Common.FileMetadata)
      private static final finsky.protos.Common.FileMetadata DEFAULT_INSTANCE;
      static {
        FileMetadata defaultInstance = new FileMetadata();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          FileMetadata.class, defaultInstance);
      }
  
      public static finsky.protos.Common.FileMetadata getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static volatile com.google.protobuf.Parser<FileMetadata> PARSER;
  
      public static com.google.protobuf.Parser<FileMetadata> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }
  
    public static finsky.protos.Common parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.Common parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.Common parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.Common parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.Common parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.Common parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.Common parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static finsky.protos.Common parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
  
    public static finsky.protos.Common parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
  
    public static finsky.protos.Common parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static finsky.protos.Common parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static finsky.protos.Common parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
  
    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(finsky.protos.Common prototype) {
      return DEFAULT_INSTANCE.createBuilder(prototype);
    }
  
    /**
     * Protobuf type {@code finsky.protos.Common}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          finsky.protos.Common, Builder> implements
        // @@protoc_insertion_point(builder_implements:finsky.protos.Common)
        finsky.protos.CommonOrBuilder {
      // Construct using finsky.protos.Common.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }
  
  
      // @@protoc_insertion_point(builder_scope:finsky.protos.Common)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new finsky.protos.Common();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0001\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<finsky.protos.Common> parser = PARSER;
          if (parser == null) {
            synchronized (finsky.protos.Common.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<finsky.protos.Common>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }
  
  
    // @@protoc_insertion_point(class_scope:finsky.protos.Common)
    private static final finsky.protos.Common DEFAULT_INSTANCE;
    static {
      Common defaultInstance = new Common();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Common.class, defaultInstance);
    }
  
    public static finsky.protos.Common getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
  
    private static volatile com.google.protobuf.Parser<Common> PARSER;
  
    public static com.google.protobuf.Parser<Common> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }
  
  