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

package com.spotify.connectstate;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface PlayerStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.PlayerState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int64 timestamp = 1;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <code>string context_uri = 2;</code>
     * @return The contextUri.
     */
    java.lang.String getContextUri();
    /**
     * <code>string context_uri = 2;</code>
     * @return The bytes for contextUri.
     */
    com.google.protobuf.ByteString
        getContextUriBytes();

    /**
     * <code>string context_url = 3;</code>
     * @return The contextUrl.
     */
    java.lang.String getContextUrl();
    /**
     * <code>string context_url = 3;</code>
     * @return The bytes for contextUrl.
     */
    com.google.protobuf.ByteString
        getContextUrlBytes();

    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     * @return Whether the contextRestrictions field is set.
     */
    boolean hasContextRestrictions();
    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     * @return The contextRestrictions.
     */
    com.spotify.connectstate.Player.Restrictions getContextRestrictions();
    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     */
    com.spotify.connectstate.Player.RestrictionsOrBuilder getContextRestrictionsOrBuilder();

    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     * @return Whether the playOrigin field is set.
     */
    boolean hasPlayOrigin();
    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     * @return The playOrigin.
     */
    com.spotify.connectstate.Player.PlayOrigin getPlayOrigin();
    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     */
    com.spotify.connectstate.Player.PlayOriginOrBuilder getPlayOriginOrBuilder();

    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     * @return Whether the index field is set.
     */
    boolean hasIndex();
    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     * @return The index.
     */
    com.spotify.connectstate.Player.ContextIndex getIndex();
    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     */
    com.spotify.connectstate.Player.ContextIndexOrBuilder getIndexOrBuilder();

    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     * @return Whether the track field is set.
     */
    boolean hasTrack();
    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     * @return The track.
     */
    com.spotify.connectstate.Player.ProvidedTrack getTrack();
    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrackOrBuilder getTrackOrBuilder();

    /**
     * <code>string playback_id = 8;</code>
     * @return The playbackId.
     */
    java.lang.String getPlaybackId();
    /**
     * <code>string playback_id = 8;</code>
     * @return The bytes for playbackId.
     */
    com.google.protobuf.ByteString
        getPlaybackIdBytes();

    /**
     * <code>double playback_speed = 9;</code>
     * @return The playbackSpeed.
     */
    double getPlaybackSpeed();

    /**
     * <code>int64 position_as_of_timestamp = 10;</code>
     * @return The positionAsOfTimestamp.
     */
    long getPositionAsOfTimestamp();

    /**
     * <code>int64 duration = 11;</code>
     * @return The duration.
     */
    long getDuration();

    /**
     * <code>bool is_playing = 12;</code>
     * @return The isPlaying.
     */
    boolean getIsPlaying();

    /**
     * <code>bool is_paused = 13;</code>
     * @return The isPaused.
     */
    boolean getIsPaused();

    /**
     * <code>bool is_buffering = 14;</code>
     * @return The isBuffering.
     */
    boolean getIsBuffering();

    /**
     * <code>bool is_system_initiated = 15;</code>
     * @return The isSystemInitiated.
     */
    boolean getIsSystemInitiated();

    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     * @return The options.
     */
    com.spotify.connectstate.Player.ContextPlayerOptions getOptions();
    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     */
    com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder getOptionsOrBuilder();

    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     * @return Whether the restrictions field is set.
     */
    boolean hasRestrictions();
    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     * @return The restrictions.
     */
    com.spotify.connectstate.Player.Restrictions getRestrictions();
    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     */
    com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder();

    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     * @return Whether the suppressions field is set.
     */
    boolean hasSuppressions();
    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     * @return The suppressions.
     */
    com.spotify.connectstate.Player.Suppressions getSuppressions();
    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     */
    com.spotify.connectstate.Player.SuppressionsOrBuilder getSuppressionsOrBuilder();

    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    java.util.List<com.spotify.connectstate.Player.ProvidedTrack> 
        getPrevTracksList();
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrack getPrevTracks(int index);
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    int getPrevTracksCount();
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getPrevTracksOrBuilderList();
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrackOrBuilder getPrevTracksOrBuilder(
        int index);

    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    java.util.List<com.spotify.connectstate.Player.ProvidedTrack> 
        getNextTracksList();
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrack getNextTracks(int index);
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    int getNextTracksCount();
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getNextTracksOrBuilderList();
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrackOrBuilder getNextTracksOrBuilder(
        int index);

    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */
    int getContextMetadataCount();
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */
    boolean containsContextMetadata(
        java.lang.String key);
    /**
     * Use {@link #getContextMetadataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getContextMetadata();
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getContextMetadataMap();
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    java.lang.String getContextMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    java.lang.String getContextMetadataOrThrow(
        java.lang.String key);

    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */
    int getPageMetadataCount();
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */
    boolean containsPageMetadata(
        java.lang.String key);
    /**
     * Use {@link #getPageMetadataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getPageMetadata();
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getPageMetadataMap();
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    java.lang.String getPageMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    java.lang.String getPageMetadataOrThrow(
        java.lang.String key);

    /**
     * <code>string session_id = 23;</code>
     * @return The sessionId.
     */
    java.lang.String getSessionId();
    /**
     * <code>string session_id = 23;</code>
     * @return The bytes for sessionId.
     */
    com.google.protobuf.ByteString
        getSessionIdBytes();

    /**
     * <code>string queue_revision = 24;</code>
     * @return The queueRevision.
     */
    java.lang.String getQueueRevision();
    /**
     * <code>string queue_revision = 24;</code>
     * @return The bytes for queueRevision.
     */
    com.google.protobuf.ByteString
        getQueueRevisionBytes();

    /**
     * <code>int64 position = 25;</code>
     * @return The position.
     */
    long getPosition();

    /**
     * <code>string entity_uri = 26;</code>
     * @return The entityUri.
     */
    java.lang.String getEntityUri();
    /**
     * <code>string entity_uri = 26;</code>
     * @return The bytes for entityUri.
     */
    com.google.protobuf.ByteString
        getEntityUriBytes();

    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    java.util.List<com.spotify.connectstate.Player.ProvidedTrack> 
        getReverseList();
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrack getReverse(int index);
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    int getReverseCount();
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getReverseOrBuilderList();
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrackOrBuilder getReverseOrBuilder(
        int index);

    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    java.util.List<com.spotify.connectstate.Player.ProvidedTrack> 
        getFutureList();
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrack getFuture(int index);
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    int getFutureCount();
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getFutureOrBuilderList();
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    com.spotify.connectstate.Player.ProvidedTrackOrBuilder getFutureOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code connectstate.PlayerState}
   */
  public  static final class PlayerState extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.PlayerState)
      PlayerStateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlayerState.newBuilder() to construct.
    private PlayerState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlayerState() {
      contextUri_ = "";
      contextUrl_ = "";
      playbackId_ = "";
      prevTracks_ = java.util.Collections.emptyList();
      nextTracks_ = java.util.Collections.emptyList();
      sessionId_ = "";
      queueRevision_ = "";
      entityUri_ = "";
      reverse_ = java.util.Collections.emptyList();
      future_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 21:
          return internalGetContextMetadata();
        case 22:
          return internalGetPageMetadata();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.PlayerState.class, com.spotify.connectstate.Player.PlayerState.Builder.class);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private long timestamp_;
    /**
     * <code>int64 timestamp = 1;</code>
     * @return The timestamp.
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CONTEXT_URI_FIELD_NUMBER = 2;
    private volatile java.lang.Object contextUri_;
    /**
     * <code>string context_uri = 2;</code>
     * @return The contextUri.
     */
    public java.lang.String getContextUri() {
      java.lang.Object ref = contextUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        contextUri_ = s;
        return s;
      }
    }
    /**
     * <code>string context_uri = 2;</code>
     * @return The bytes for contextUri.
     */
    public com.google.protobuf.ByteString
        getContextUriBytes() {
      java.lang.Object ref = contextUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        contextUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTEXT_URL_FIELD_NUMBER = 3;
    private volatile java.lang.Object contextUrl_;
    /**
     * <code>string context_url = 3;</code>
     * @return The contextUrl.
     */
    public java.lang.String getContextUrl() {
      java.lang.Object ref = contextUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        contextUrl_ = s;
        return s;
      }
    }
    /**
     * <code>string context_url = 3;</code>
     * @return The bytes for contextUrl.
     */
    public com.google.protobuf.ByteString
        getContextUrlBytes() {
      java.lang.Object ref = contextUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        contextUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTEXT_RESTRICTIONS_FIELD_NUMBER = 4;
    private com.spotify.connectstate.Player.Restrictions contextRestrictions_;
    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     * @return Whether the contextRestrictions field is set.
     */
    public boolean hasContextRestrictions() {
      return contextRestrictions_ != null;
    }
    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     * @return The contextRestrictions.
     */
    public com.spotify.connectstate.Player.Restrictions getContextRestrictions() {
      return contextRestrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : contextRestrictions_;
    }
    /**
     * <code>.connectstate.Restrictions context_restrictions = 4;</code>
     */
    public com.spotify.connectstate.Player.RestrictionsOrBuilder getContextRestrictionsOrBuilder() {
      return getContextRestrictions();
    }

    public static final int PLAY_ORIGIN_FIELD_NUMBER = 5;
    private com.spotify.connectstate.Player.PlayOrigin playOrigin_;
    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     * @return Whether the playOrigin field is set.
     */
    public boolean hasPlayOrigin() {
      return playOrigin_ != null;
    }
    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     * @return The playOrigin.
     */
    public com.spotify.connectstate.Player.PlayOrigin getPlayOrigin() {
      return playOrigin_ == null ? com.spotify.connectstate.Player.PlayOrigin.getDefaultInstance() : playOrigin_;
    }
    /**
     * <code>.connectstate.PlayOrigin play_origin = 5;</code>
     */
    public com.spotify.connectstate.Player.PlayOriginOrBuilder getPlayOriginOrBuilder() {
      return getPlayOrigin();
    }

    public static final int INDEX_FIELD_NUMBER = 6;
    private com.spotify.connectstate.Player.ContextIndex index_;
    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     * @return Whether the index field is set.
     */
    public boolean hasIndex() {
      return index_ != null;
    }
    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     * @return The index.
     */
    public com.spotify.connectstate.Player.ContextIndex getIndex() {
      return index_ == null ? com.spotify.connectstate.Player.ContextIndex.getDefaultInstance() : index_;
    }
    /**
     * <code>.connectstate.ContextIndex index = 6;</code>
     */
    public com.spotify.connectstate.Player.ContextIndexOrBuilder getIndexOrBuilder() {
      return getIndex();
    }

    public static final int TRACK_FIELD_NUMBER = 7;
    private com.spotify.connectstate.Player.ProvidedTrack track_;
    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     * @return Whether the track field is set.
     */
    public boolean hasTrack() {
      return track_ != null;
    }
    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     * @return The track.
     */
    public com.spotify.connectstate.Player.ProvidedTrack getTrack() {
      return track_ == null ? com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance() : track_;
    }
    /**
     * <code>.connectstate.ProvidedTrack track = 7;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getTrackOrBuilder() {
      return getTrack();
    }

    public static final int PLAYBACK_ID_FIELD_NUMBER = 8;
    private volatile java.lang.Object playbackId_;
    /**
     * <code>string playback_id = 8;</code>
     * @return The playbackId.
     */
    public java.lang.String getPlaybackId() {
      java.lang.Object ref = playbackId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        playbackId_ = s;
        return s;
      }
    }
    /**
     * <code>string playback_id = 8;</code>
     * @return The bytes for playbackId.
     */
    public com.google.protobuf.ByteString
        getPlaybackIdBytes() {
      java.lang.Object ref = playbackId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        playbackId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PLAYBACK_SPEED_FIELD_NUMBER = 9;
    private double playbackSpeed_;
    /**
     * <code>double playback_speed = 9;</code>
     * @return The playbackSpeed.
     */
    public double getPlaybackSpeed() {
      return playbackSpeed_;
    }

    public static final int POSITION_AS_OF_TIMESTAMP_FIELD_NUMBER = 10;
    private long positionAsOfTimestamp_;
    /**
     * <code>int64 position_as_of_timestamp = 10;</code>
     * @return The positionAsOfTimestamp.
     */
    public long getPositionAsOfTimestamp() {
      return positionAsOfTimestamp_;
    }

    public static final int DURATION_FIELD_NUMBER = 11;
    private long duration_;
    /**
     * <code>int64 duration = 11;</code>
     * @return The duration.
     */
    public long getDuration() {
      return duration_;
    }

    public static final int IS_PLAYING_FIELD_NUMBER = 12;
    private boolean isPlaying_;
    /**
     * <code>bool is_playing = 12;</code>
     * @return The isPlaying.
     */
    public boolean getIsPlaying() {
      return isPlaying_;
    }

    public static final int IS_PAUSED_FIELD_NUMBER = 13;
    private boolean isPaused_;
    /**
     * <code>bool is_paused = 13;</code>
     * @return The isPaused.
     */
    public boolean getIsPaused() {
      return isPaused_;
    }

    public static final int IS_BUFFERING_FIELD_NUMBER = 14;
    private boolean isBuffering_;
    /**
     * <code>bool is_buffering = 14;</code>
     * @return The isBuffering.
     */
    public boolean getIsBuffering() {
      return isBuffering_;
    }

    public static final int IS_SYSTEM_INITIATED_FIELD_NUMBER = 15;
    private boolean isSystemInitiated_;
    /**
     * <code>bool is_system_initiated = 15;</code>
     * @return The isSystemInitiated.
     */
    public boolean getIsSystemInitiated() {
      return isSystemInitiated_;
    }

    public static final int OPTIONS_FIELD_NUMBER = 16;
    private com.spotify.connectstate.Player.ContextPlayerOptions options_;
    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     * @return Whether the options field is set.
     */
    public boolean hasOptions() {
      return options_ != null;
    }
    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     * @return The options.
     */
    public com.spotify.connectstate.Player.ContextPlayerOptions getOptions() {
      return options_ == null ? com.spotify.connectstate.Player.ContextPlayerOptions.getDefaultInstance() : options_;
    }
    /**
     * <code>.connectstate.ContextPlayerOptions options = 16;</code>
     */
    public com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder getOptionsOrBuilder() {
      return getOptions();
    }

    public static final int RESTRICTIONS_FIELD_NUMBER = 17;
    private com.spotify.connectstate.Player.Restrictions restrictions_;
    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     * @return Whether the restrictions field is set.
     */
    public boolean hasRestrictions() {
      return restrictions_ != null;
    }
    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     * @return The restrictions.
     */
    public com.spotify.connectstate.Player.Restrictions getRestrictions() {
      return restrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
    }
    /**
     * <code>.connectstate.Restrictions restrictions = 17;</code>
     */
    public com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder() {
      return getRestrictions();
    }

    public static final int SUPPRESSIONS_FIELD_NUMBER = 18;
    private com.spotify.connectstate.Player.Suppressions suppressions_;
    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     * @return Whether the suppressions field is set.
     */
    public boolean hasSuppressions() {
      return suppressions_ != null;
    }
    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     * @return The suppressions.
     */
    public com.spotify.connectstate.Player.Suppressions getSuppressions() {
      return suppressions_ == null ? com.spotify.connectstate.Player.Suppressions.getDefaultInstance() : suppressions_;
    }
    /**
     * <code>.connectstate.Suppressions suppressions = 18;</code>
     */
    public com.spotify.connectstate.Player.SuppressionsOrBuilder getSuppressionsOrBuilder() {
      return getSuppressions();
    }

    public static final int PREV_TRACKS_FIELD_NUMBER = 19;
    private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> prevTracks_;
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getPrevTracksList() {
      return prevTracks_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getPrevTracksOrBuilderList() {
      return prevTracks_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    public int getPrevTracksCount() {
      return prevTracks_.size();
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrack getPrevTracks(int index) {
      return prevTracks_.get(index);
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getPrevTracksOrBuilder(
        int index) {
      return prevTracks_.get(index);
    }

    public static final int NEXT_TRACKS_FIELD_NUMBER = 20;
    private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> nextTracks_;
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getNextTracksList() {
      return nextTracks_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getNextTracksOrBuilderList() {
      return nextTracks_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    public int getNextTracksCount() {
      return nextTracks_.size();
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrack getNextTracks(int index) {
      return nextTracks_.get(index);
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getNextTracksOrBuilder(
        int index) {
      return nextTracks_.get(index);
    }

    public static final int CONTEXT_METADATA_FIELD_NUMBER = 21;
    private static final class ContextMetadataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_ContextMetadataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> contextMetadata_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetContextMetadata() {
      if (contextMetadata_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ContextMetadataDefaultEntryHolder.defaultEntry);
      }
      return contextMetadata_;
    }

    public int getContextMetadataCount() {
      return internalGetContextMetadata().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    public boolean containsContextMetadata(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetContextMetadata().getMap().containsKey(key);
    }
    /**
     * Use {@link #getContextMetadataMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getContextMetadata() {
      return getContextMetadataMap();
    }
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getContextMetadataMap() {
      return internalGetContextMetadata().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    public java.lang.String getContextMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetContextMetadata().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; context_metadata = 21;</code>
     */

    public java.lang.String getContextMetadataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetContextMetadata().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int PAGE_METADATA_FIELD_NUMBER = 22;
    private static final class PageMetadataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_PageMetadataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> pageMetadata_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetPageMetadata() {
      if (pageMetadata_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PageMetadataDefaultEntryHolder.defaultEntry);
      }
      return pageMetadata_;
    }

    public int getPageMetadataCount() {
      return internalGetPageMetadata().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    public boolean containsPageMetadata(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetPageMetadata().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPageMetadataMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getPageMetadata() {
      return getPageMetadataMap();
    }
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getPageMetadataMap() {
      return internalGetPageMetadata().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    public java.lang.String getPageMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetPageMetadata().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; page_metadata = 22;</code>
     */

    public java.lang.String getPageMetadataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetPageMetadata().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int SESSION_ID_FIELD_NUMBER = 23;
    private volatile java.lang.Object sessionId_;
    /**
     * <code>string session_id = 23;</code>
     * @return The sessionId.
     */
    public java.lang.String getSessionId() {
      java.lang.Object ref = sessionId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sessionId_ = s;
        return s;
      }
    }
    /**
     * <code>string session_id = 23;</code>
     * @return The bytes for sessionId.
     */
    public com.google.protobuf.ByteString
        getSessionIdBytes() {
      java.lang.Object ref = sessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sessionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int QUEUE_REVISION_FIELD_NUMBER = 24;
    private volatile java.lang.Object queueRevision_;
    /**
     * <code>string queue_revision = 24;</code>
     * @return The queueRevision.
     */
    public java.lang.String getQueueRevision() {
      java.lang.Object ref = queueRevision_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        queueRevision_ = s;
        return s;
      }
    }
    /**
     * <code>string queue_revision = 24;</code>
     * @return The bytes for queueRevision.
     */
    public com.google.protobuf.ByteString
        getQueueRevisionBytes() {
      java.lang.Object ref = queueRevision_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        queueRevision_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int POSITION_FIELD_NUMBER = 25;
    private long position_;
    /**
     * <code>int64 position = 25;</code>
     * @return The position.
     */
    public long getPosition() {
      return position_;
    }

    public static final int ENTITY_URI_FIELD_NUMBER = 26;
    private volatile java.lang.Object entityUri_;
    /**
     * <code>string entity_uri = 26;</code>
     * @return The entityUri.
     */
    public java.lang.String getEntityUri() {
      java.lang.Object ref = entityUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        entityUri_ = s;
        return s;
      }
    }
    /**
     * <code>string entity_uri = 26;</code>
     * @return The bytes for entityUri.
     */
    public com.google.protobuf.ByteString
        getEntityUriBytes() {
      java.lang.Object ref = entityUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        entityUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REVERSE_FIELD_NUMBER = 27;
    private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> reverse_;
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getReverseList() {
      return reverse_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getReverseOrBuilderList() {
      return reverse_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    public int getReverseCount() {
      return reverse_.size();
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrack getReverse(int index) {
      return reverse_.get(index);
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getReverseOrBuilder(
        int index) {
      return reverse_.get(index);
    }

    public static final int FUTURE_FIELD_NUMBER = 28;
    private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> future_;
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getFutureList() {
      return future_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
        getFutureOrBuilderList() {
      return future_;
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    public int getFutureCount() {
      return future_.size();
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrack getFuture(int index) {
      return future_.get(index);
    }
    /**
     * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
     */
    public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getFutureOrBuilder(
        int index) {
      return future_.get(index);
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.PlayerState prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.PlayerState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.PlayerState)
        com.spotify.connectstate.Player.PlayerStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 21:
            return internalGetContextMetadata();
          case 22:
            return internalGetPageMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 21:
            return internalGetMutableContextMetadata();
          case 22:
            return internalGetMutablePageMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.PlayerState.class, com.spotify.connectstate.Player.PlayerState.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.PlayerState.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrevTracksFieldBuilder();
          getNextTracksFieldBuilder();
          getReverseFieldBuilder();
          getFutureFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        timestamp_ = 0L;

        contextUri_ = "";

        contextUrl_ = "";

        if (contextRestrictionsBuilder_ == null) {
          contextRestrictions_ = null;
        } else {
          contextRestrictions_ = null;
          contextRestrictionsBuilder_ = null;
        }
        if (playOriginBuilder_ == null) {
          playOrigin_ = null;
        } else {
          playOrigin_ = null;
          playOriginBuilder_ = null;
        }
        if (indexBuilder_ == null) {
          index_ = null;
        } else {
          index_ = null;
          indexBuilder_ = null;
        }
        if (trackBuilder_ == null) {
          track_ = null;
        } else {
          track_ = null;
          trackBuilder_ = null;
        }
        playbackId_ = "";

        playbackSpeed_ = 0D;

        positionAsOfTimestamp_ = 0L;

        duration_ = 0L;

        isPlaying_ = false;

        isPaused_ = false;

        isBuffering_ = false;

        isSystemInitiated_ = false;

        if (optionsBuilder_ == null) {
          options_ = null;
        } else {
          options_ = null;
          optionsBuilder_ = null;
        }
        if (restrictionsBuilder_ == null) {
          restrictions_ = null;
        } else {
          restrictions_ = null;
          restrictionsBuilder_ = null;
        }
        if (suppressionsBuilder_ == null) {
          suppressions_ = null;
        } else {
          suppressions_ = null;
          suppressionsBuilder_ = null;
        }
        if (prevTracksBuilder_ == null) {
          prevTracks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          prevTracksBuilder_.clear();
        }
        if (nextTracksBuilder_ == null) {
          nextTracks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          nextTracksBuilder_.clear();
        }
        internalGetMutableContextMetadata().clear();
        internalGetMutablePageMetadata().clear();
        sessionId_ = "";

        queueRevision_ = "";

        position_ = 0L;

        entityUri_ = "";

        if (reverseBuilder_ == null) {
          reverse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          reverseBuilder_.clear();
        }
        if (futureBuilder_ == null) {
          future_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          futureBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayerState_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayerState getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.PlayerState.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayerState build() {
        com.spotify.connectstate.Player.PlayerState result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayerState buildPartial() {
        com.spotify.connectstate.Player.PlayerState result = new com.spotify.connectstate.Player.PlayerState(this);
        int from_bitField0_ = bitField0_;
        result.timestamp_ = timestamp_;
        result.contextUri_ = contextUri_;
        result.contextUrl_ = contextUrl_;
        if (contextRestrictionsBuilder_ == null) {
          result.contextRestrictions_ = contextRestrictions_;
        } else {
          result.contextRestrictions_ = contextRestrictionsBuilder_.build();
        }
        if (playOriginBuilder_ == null) {
          result.playOrigin_ = playOrigin_;
        } else {
          result.playOrigin_ = playOriginBuilder_.build();
        }
        if (indexBuilder_ == null) {
          result.index_ = index_;
        } else {
          result.index_ = indexBuilder_.build();
        }
        if (trackBuilder_ == null) {
          result.track_ = track_;
        } else {
          result.track_ = trackBuilder_.build();
        }
        result.playbackId_ = playbackId_;
        result.playbackSpeed_ = playbackSpeed_;
        result.positionAsOfTimestamp_ = positionAsOfTimestamp_;
        result.duration_ = duration_;
        result.isPlaying_ = isPlaying_;
        result.isPaused_ = isPaused_;
        result.isBuffering_ = isBuffering_;
        result.isSystemInitiated_ = isSystemInitiated_;
        if (optionsBuilder_ == null) {
          result.options_ = options_;
        } else {
          result.options_ = optionsBuilder_.build();
        }
        if (restrictionsBuilder_ == null) {
          result.restrictions_ = restrictions_;
        } else {
          result.restrictions_ = restrictionsBuilder_.build();
        }
        if (suppressionsBuilder_ == null) {
          result.suppressions_ = suppressions_;
        } else {
          result.suppressions_ = suppressionsBuilder_.build();
        }
        if (prevTracksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            prevTracks_ = java.util.Collections.unmodifiableList(prevTracks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.prevTracks_ = prevTracks_;
        } else {
          result.prevTracks_ = prevTracksBuilder_.build();
        }
        if (nextTracksBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            nextTracks_ = java.util.Collections.unmodifiableList(nextTracks_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.nextTracks_ = nextTracks_;
        } else {
          result.nextTracks_ = nextTracksBuilder_.build();
        }
        result.contextMetadata_ = internalGetContextMetadata();
        result.contextMetadata_.makeImmutable();
        result.pageMetadata_ = internalGetPageMetadata();
        result.pageMetadata_.makeImmutable();
        result.sessionId_ = sessionId_;
        result.queueRevision_ = queueRevision_;
        result.position_ = position_;
        result.entityUri_ = entityUri_;
        if (reverseBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            reverse_ = java.util.Collections.unmodifiableList(reverse_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.reverse_ = reverse_;
        } else {
          result.reverse_ = reverseBuilder_.build();
        }
        if (futureBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            future_ = java.util.Collections.unmodifiableList(future_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.future_ = future_;
        } else {
          result.future_ = futureBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      private int bitField0_;

      private long timestamp_ ;
      /**
       * <code>int64 timestamp = 1;</code>
       * @return The timestamp.
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>int64 timestamp = 1;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 timestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object contextUri_ = "";
      /**
       * <code>string context_uri = 2;</code>
       * @return The contextUri.
       */
      public java.lang.String getContextUri() {
        java.lang.Object ref = contextUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          contextUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string context_uri = 2;</code>
       * @return The bytes for contextUri.
       */
      public com.google.protobuf.ByteString
          getContextUriBytes() {
        java.lang.Object ref = contextUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          contextUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string context_uri = 2;</code>
       * @param value The contextUri to set.
       * @return This builder for chaining.
       */
      public Builder setContextUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        contextUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string context_uri = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearContextUri() {
        
        contextUri_ = getDefaultInstance().getContextUri();
        onChanged();
        return this;
      }
      /**
       * <code>string context_uri = 2;</code>
       * @param value The bytes for contextUri to set.
       * @return This builder for chaining.
       */
      public Builder setContextUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        contextUri_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object contextUrl_ = "";
      /**
       * <code>string context_url = 3;</code>
       * @return The contextUrl.
       */
      public java.lang.String getContextUrl() {
        java.lang.Object ref = contextUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          contextUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string context_url = 3;</code>
       * @return The bytes for contextUrl.
       */
      public com.google.protobuf.ByteString
          getContextUrlBytes() {
        java.lang.Object ref = contextUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          contextUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string context_url = 3;</code>
       * @param value The contextUrl to set.
       * @return This builder for chaining.
       */
      public Builder setContextUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        contextUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string context_url = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearContextUrl() {
        
        contextUrl_ = getDefaultInstance().getContextUrl();
        onChanged();
        return this;
      }
      /**
       * <code>string context_url = 3;</code>
       * @param value The bytes for contextUrl to set.
       * @return This builder for chaining.
       */
      public Builder setContextUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        contextUrl_ = value;
        onChanged();
        return this;
      }

      private com.spotify.connectstate.Player.Restrictions contextRestrictions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> contextRestrictionsBuilder_;
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       * @return Whether the contextRestrictions field is set.
       */
      public boolean hasContextRestrictions() {
        return contextRestrictionsBuilder_ != null || contextRestrictions_ != null;
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       * @return The contextRestrictions.
       */
      public com.spotify.connectstate.Player.Restrictions getContextRestrictions() {
        if (contextRestrictionsBuilder_ == null) {
          return contextRestrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : contextRestrictions_;
        } else {
          return contextRestrictionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public Builder setContextRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (contextRestrictionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextRestrictions_ = value;
          onChanged();
        } else {
          contextRestrictionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public Builder setContextRestrictions(
          com.spotify.connectstate.Player.Restrictions.Builder builderForValue) {
        if (contextRestrictionsBuilder_ == null) {
          contextRestrictions_ = builderForValue.build();
          onChanged();
        } else {
          contextRestrictionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public Builder mergeContextRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (contextRestrictionsBuilder_ == null) {
          if (contextRestrictions_ != null) {
            contextRestrictions_ =
              com.spotify.connectstate.Player.Restrictions.newBuilder(contextRestrictions_).mergeFrom(value).buildPartial();
          } else {
            contextRestrictions_ = value;
          }
          onChanged();
        } else {
          contextRestrictionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public Builder clearContextRestrictions() {
        if (contextRestrictionsBuilder_ == null) {
          contextRestrictions_ = null;
          onChanged();
        } else {
          contextRestrictions_ = null;
          contextRestrictionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public com.spotify.connectstate.Player.Restrictions.Builder getContextRestrictionsBuilder() {
        
        onChanged();
        return getContextRestrictionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      public com.spotify.connectstate.Player.RestrictionsOrBuilder getContextRestrictionsOrBuilder() {
        if (contextRestrictionsBuilder_ != null) {
          return contextRestrictionsBuilder_.getMessageOrBuilder();
        } else {
          return contextRestrictions_ == null ?
              com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : contextRestrictions_;
        }
      }
      /**
       * <code>.connectstate.Restrictions context_restrictions = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> 
          getContextRestrictionsFieldBuilder() {
        if (contextRestrictionsBuilder_ == null) {
          contextRestrictionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder>(
                  getContextRestrictions(),
                  getParentForChildren(),
                  isClean());
          contextRestrictions_ = null;
        }
        return contextRestrictionsBuilder_;
      }

      private com.spotify.connectstate.Player.PlayOrigin playOrigin_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.PlayOrigin, com.spotify.connectstate.Player.PlayOrigin.Builder, com.spotify.connectstate.Player.PlayOriginOrBuilder> playOriginBuilder_;
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       * @return Whether the playOrigin field is set.
       */
      public boolean hasPlayOrigin() {
        return playOriginBuilder_ != null || playOrigin_ != null;
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       * @return The playOrigin.
       */
      public com.spotify.connectstate.Player.PlayOrigin getPlayOrigin() {
        if (playOriginBuilder_ == null) {
          return playOrigin_ == null ? com.spotify.connectstate.Player.PlayOrigin.getDefaultInstance() : playOrigin_;
        } else {
          return playOriginBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public Builder setPlayOrigin(com.spotify.connectstate.Player.PlayOrigin value) {
        if (playOriginBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          playOrigin_ = value;
          onChanged();
        } else {
          playOriginBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public Builder setPlayOrigin(
          com.spotify.connectstate.Player.PlayOrigin.Builder builderForValue) {
        if (playOriginBuilder_ == null) {
          playOrigin_ = builderForValue.build();
          onChanged();
        } else {
          playOriginBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public Builder mergePlayOrigin(com.spotify.connectstate.Player.PlayOrigin value) {
        if (playOriginBuilder_ == null) {
          if (playOrigin_ != null) {
            playOrigin_ =
              com.spotify.connectstate.Player.PlayOrigin.newBuilder(playOrigin_).mergeFrom(value).buildPartial();
          } else {
            playOrigin_ = value;
          }
          onChanged();
        } else {
          playOriginBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public Builder clearPlayOrigin() {
        if (playOriginBuilder_ == null) {
          playOrigin_ = null;
          onChanged();
        } else {
          playOrigin_ = null;
          playOriginBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public com.spotify.connectstate.Player.PlayOrigin.Builder getPlayOriginBuilder() {
        
        onChanged();
        return getPlayOriginFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      public com.spotify.connectstate.Player.PlayOriginOrBuilder getPlayOriginOrBuilder() {
        if (playOriginBuilder_ != null) {
          return playOriginBuilder_.getMessageOrBuilder();
        } else {
          return playOrigin_ == null ?
              com.spotify.connectstate.Player.PlayOrigin.getDefaultInstance() : playOrigin_;
        }
      }
      /**
       * <code>.connectstate.PlayOrigin play_origin = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.PlayOrigin, com.spotify.connectstate.Player.PlayOrigin.Builder, com.spotify.connectstate.Player.PlayOriginOrBuilder> 
          getPlayOriginFieldBuilder() {
        if (playOriginBuilder_ == null) {
          playOriginBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.PlayOrigin, com.spotify.connectstate.Player.PlayOrigin.Builder, com.spotify.connectstate.Player.PlayOriginOrBuilder>(
                  getPlayOrigin(),
                  getParentForChildren(),
                  isClean());
          playOrigin_ = null;
        }
        return playOriginBuilder_;
      }

      private com.spotify.connectstate.Player.ContextIndex index_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ContextIndex, com.spotify.connectstate.Player.ContextIndex.Builder, com.spotify.connectstate.Player.ContextIndexOrBuilder> indexBuilder_;
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       * @return Whether the index field is set.
       */
      public boolean hasIndex() {
        return indexBuilder_ != null || index_ != null;
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       * @return The index.
       */
      public com.spotify.connectstate.Player.ContextIndex getIndex() {
        if (indexBuilder_ == null) {
          return index_ == null ? com.spotify.connectstate.Player.ContextIndex.getDefaultInstance() : index_;
        } else {
          return indexBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public Builder setIndex(com.spotify.connectstate.Player.ContextIndex value) {
        if (indexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          index_ = value;
          onChanged();
        } else {
          indexBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public Builder setIndex(
          com.spotify.connectstate.Player.ContextIndex.Builder builderForValue) {
        if (indexBuilder_ == null) {
          index_ = builderForValue.build();
          onChanged();
        } else {
          indexBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public Builder mergeIndex(com.spotify.connectstate.Player.ContextIndex value) {
        if (indexBuilder_ == null) {
          if (index_ != null) {
            index_ =
              com.spotify.connectstate.Player.ContextIndex.newBuilder(index_).mergeFrom(value).buildPartial();
          } else {
            index_ = value;
          }
          onChanged();
        } else {
          indexBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public Builder clearIndex() {
        if (indexBuilder_ == null) {
          index_ = null;
          onChanged();
        } else {
          index_ = null;
          indexBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public com.spotify.connectstate.Player.ContextIndex.Builder getIndexBuilder() {
        
        onChanged();
        return getIndexFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      public com.spotify.connectstate.Player.ContextIndexOrBuilder getIndexOrBuilder() {
        if (indexBuilder_ != null) {
          return indexBuilder_.getMessageOrBuilder();
        } else {
          return index_ == null ?
              com.spotify.connectstate.Player.ContextIndex.getDefaultInstance() : index_;
        }
      }
      /**
       * <code>.connectstate.ContextIndex index = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ContextIndex, com.spotify.connectstate.Player.ContextIndex.Builder, com.spotify.connectstate.Player.ContextIndexOrBuilder> 
          getIndexFieldBuilder() {
        if (indexBuilder_ == null) {
          indexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.ContextIndex, com.spotify.connectstate.Player.ContextIndex.Builder, com.spotify.connectstate.Player.ContextIndexOrBuilder>(
                  getIndex(),
                  getParentForChildren(),
                  isClean());
          index_ = null;
        }
        return indexBuilder_;
      }

      private com.spotify.connectstate.Player.ProvidedTrack track_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> trackBuilder_;
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       * @return Whether the track field is set.
       */
      public boolean hasTrack() {
        return trackBuilder_ != null || track_ != null;
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       * @return The track.
       */
      public com.spotify.connectstate.Player.ProvidedTrack getTrack() {
        if (trackBuilder_ == null) {
          return track_ == null ? com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance() : track_;
        } else {
          return trackBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public Builder setTrack(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (trackBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          track_ = value;
          onChanged();
        } else {
          trackBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public Builder setTrack(
          com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (trackBuilder_ == null) {
          track_ = builderForValue.build();
          onChanged();
        } else {
          trackBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public Builder mergeTrack(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (trackBuilder_ == null) {
          if (track_ != null) {
            track_ =
              com.spotify.connectstate.Player.ProvidedTrack.newBuilder(track_).mergeFrom(value).buildPartial();
          } else {
            track_ = value;
          }
          onChanged();
        } else {
          trackBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public Builder clearTrack() {
        if (trackBuilder_ == null) {
          track_ = null;
          onChanged();
        } else {
          track_ = null;
          trackBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder getTrackBuilder() {
        
        onChanged();
        return getTrackFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getTrackOrBuilder() {
        if (trackBuilder_ != null) {
          return trackBuilder_.getMessageOrBuilder();
        } else {
          return track_ == null ?
              com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance() : track_;
        }
      }
      /**
       * <code>.connectstate.ProvidedTrack track = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
          getTrackFieldBuilder() {
        if (trackBuilder_ == null) {
          trackBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder>(
                  getTrack(),
                  getParentForChildren(),
                  isClean());
          track_ = null;
        }
        return trackBuilder_;
      }

      private java.lang.Object playbackId_ = "";
      /**
       * <code>string playback_id = 8;</code>
       * @return The playbackId.
       */
      public java.lang.String getPlaybackId() {
        java.lang.Object ref = playbackId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          playbackId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string playback_id = 8;</code>
       * @return The bytes for playbackId.
       */
      public com.google.protobuf.ByteString
          getPlaybackIdBytes() {
        java.lang.Object ref = playbackId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          playbackId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string playback_id = 8;</code>
       * @param value The playbackId to set.
       * @return This builder for chaining.
       */
      public Builder setPlaybackId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        playbackId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string playback_id = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlaybackId() {
        
        playbackId_ = getDefaultInstance().getPlaybackId();
        onChanged();
        return this;
      }
      /**
       * <code>string playback_id = 8;</code>
       * @param value The bytes for playbackId to set.
       * @return This builder for chaining.
       */
      public Builder setPlaybackIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        playbackId_ = value;
        onChanged();
        return this;
      }

      private double playbackSpeed_ ;
      /**
       * <code>double playback_speed = 9;</code>
       * @return The playbackSpeed.
       */
      public double getPlaybackSpeed() {
        return playbackSpeed_;
      }
      /**
       * <code>double playback_speed = 9;</code>
       * @param value The playbackSpeed to set.
       * @return This builder for chaining.
       */
      public Builder setPlaybackSpeed(double value) {
        
        playbackSpeed_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double playback_speed = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlaybackSpeed() {
        
        playbackSpeed_ = 0D;
        onChanged();
        return this;
      }

      private long positionAsOfTimestamp_ ;
      /**
       * <code>int64 position_as_of_timestamp = 10;</code>
       * @return The positionAsOfTimestamp.
       */
      public long getPositionAsOfTimestamp() {
        return positionAsOfTimestamp_;
      }
      /**
       * <code>int64 position_as_of_timestamp = 10;</code>
       * @param value The positionAsOfTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setPositionAsOfTimestamp(long value) {
        
        positionAsOfTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 position_as_of_timestamp = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearPositionAsOfTimestamp() {
        
        positionAsOfTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private long duration_ ;
      /**
       * <code>int64 duration = 11;</code>
       * @return The duration.
       */
      public long getDuration() {
        return duration_;
      }
      /**
       * <code>int64 duration = 11;</code>
       * @param value The duration to set.
       * @return This builder for chaining.
       */
      public Builder setDuration(long value) {
        
        duration_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 duration = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDuration() {
        
        duration_ = 0L;
        onChanged();
        return this;
      }

      private boolean isPlaying_ ;
      /**
       * <code>bool is_playing = 12;</code>
       * @return The isPlaying.
       */
      public boolean getIsPlaying() {
        return isPlaying_;
      }
      /**
       * <code>bool is_playing = 12;</code>
       * @param value The isPlaying to set.
       * @return This builder for chaining.
       */
      public Builder setIsPlaying(boolean value) {
        
        isPlaying_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_playing = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsPlaying() {
        
        isPlaying_ = false;
        onChanged();
        return this;
      }

      private boolean isPaused_ ;
      /**
       * <code>bool is_paused = 13;</code>
       * @return The isPaused.
       */
      public boolean getIsPaused() {
        return isPaused_;
      }
      /**
       * <code>bool is_paused = 13;</code>
       * @param value The isPaused to set.
       * @return This builder for chaining.
       */
      public Builder setIsPaused(boolean value) {
        
        isPaused_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_paused = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsPaused() {
        
        isPaused_ = false;
        onChanged();
        return this;
      }

      private boolean isBuffering_ ;
      /**
       * <code>bool is_buffering = 14;</code>
       * @return The isBuffering.
       */
      public boolean getIsBuffering() {
        return isBuffering_;
      }
      /**
       * <code>bool is_buffering = 14;</code>
       * @param value The isBuffering to set.
       * @return This builder for chaining.
       */
      public Builder setIsBuffering(boolean value) {
        
        isBuffering_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_buffering = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsBuffering() {
        
        isBuffering_ = false;
        onChanged();
        return this;
      }

      private boolean isSystemInitiated_ ;
      /**
       * <code>bool is_system_initiated = 15;</code>
       * @return The isSystemInitiated.
       */
      public boolean getIsSystemInitiated() {
        return isSystemInitiated_;
      }
      /**
       * <code>bool is_system_initiated = 15;</code>
       * @param value The isSystemInitiated to set.
       * @return This builder for chaining.
       */
      public Builder setIsSystemInitiated(boolean value) {
        
        isSystemInitiated_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_system_initiated = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSystemInitiated() {
        
        isSystemInitiated_ = false;
        onChanged();
        return this;
      }

      private com.spotify.connectstate.Player.ContextPlayerOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ContextPlayerOptions, com.spotify.connectstate.Player.ContextPlayerOptions.Builder, com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder> optionsBuilder_;
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return optionsBuilder_ != null || options_ != null;
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       * @return The options.
       */
      public com.spotify.connectstate.Player.ContextPlayerOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.spotify.connectstate.Player.ContextPlayerOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public Builder setOptions(com.spotify.connectstate.Player.ContextPlayerOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
          onChanged();
        } else {
          optionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public Builder setOptions(
          com.spotify.connectstate.Player.ContextPlayerOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
          onChanged();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public Builder mergeOptions(com.spotify.connectstate.Player.ContextPlayerOptions value) {
        if (optionsBuilder_ == null) {
          if (options_ != null) {
            options_ =
              com.spotify.connectstate.Player.ContextPlayerOptions.newBuilder(options_).mergeFrom(value).buildPartial();
          } else {
            options_ = value;
          }
          onChanged();
        } else {
          optionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public Builder clearOptions() {
        if (optionsBuilder_ == null) {
          options_ = null;
          onChanged();
        } else {
          options_ = null;
          optionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public com.spotify.connectstate.Player.ContextPlayerOptions.Builder getOptionsBuilder() {
        
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      public com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.spotify.connectstate.Player.ContextPlayerOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * <code>.connectstate.ContextPlayerOptions options = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.ContextPlayerOptions, com.spotify.connectstate.Player.ContextPlayerOptions.Builder, com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.ContextPlayerOptions, com.spotify.connectstate.Player.ContextPlayerOptions.Builder, com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }

      private com.spotify.connectstate.Player.Restrictions restrictions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> restrictionsBuilder_;
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       * @return Whether the restrictions field is set.
       */
      public boolean hasRestrictions() {
        return restrictionsBuilder_ != null || restrictions_ != null;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       * @return The restrictions.
       */
      public com.spotify.connectstate.Player.Restrictions getRestrictions() {
        if (restrictionsBuilder_ == null) {
          return restrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
        } else {
          return restrictionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public Builder setRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (restrictionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          restrictions_ = value;
          onChanged();
        } else {
          restrictionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public Builder setRestrictions(
          com.spotify.connectstate.Player.Restrictions.Builder builderForValue) {
        if (restrictionsBuilder_ == null) {
          restrictions_ = builderForValue.build();
          onChanged();
        } else {
          restrictionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public Builder mergeRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (restrictionsBuilder_ == null) {
          if (restrictions_ != null) {
            restrictions_ =
              com.spotify.connectstate.Player.Restrictions.newBuilder(restrictions_).mergeFrom(value).buildPartial();
          } else {
            restrictions_ = value;
          }
          onChanged();
        } else {
          restrictionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public Builder clearRestrictions() {
        if (restrictionsBuilder_ == null) {
          restrictions_ = null;
          onChanged();
        } else {
          restrictions_ = null;
          restrictionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public com.spotify.connectstate.Player.Restrictions.Builder getRestrictionsBuilder() {
        
        onChanged();
        return getRestrictionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      public com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder() {
        if (restrictionsBuilder_ != null) {
          return restrictionsBuilder_.getMessageOrBuilder();
        } else {
          return restrictions_ == null ?
              com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
        }
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> 
          getRestrictionsFieldBuilder() {
        if (restrictionsBuilder_ == null) {
          restrictionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder>(
                  getRestrictions(),
                  getParentForChildren(),
                  isClean());
          restrictions_ = null;
        }
        return restrictionsBuilder_;
      }

      private com.spotify.connectstate.Player.Suppressions suppressions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Suppressions, com.spotify.connectstate.Player.Suppressions.Builder, com.spotify.connectstate.Player.SuppressionsOrBuilder> suppressionsBuilder_;
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       * @return Whether the suppressions field is set.
       */
      public boolean hasSuppressions() {
        return suppressionsBuilder_ != null || suppressions_ != null;
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       * @return The suppressions.
       */
      public com.spotify.connectstate.Player.Suppressions getSuppressions() {
        if (suppressionsBuilder_ == null) {
          return suppressions_ == null ? com.spotify.connectstate.Player.Suppressions.getDefaultInstance() : suppressions_;
        } else {
          return suppressionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public Builder setSuppressions(com.spotify.connectstate.Player.Suppressions value) {
        if (suppressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          suppressions_ = value;
          onChanged();
        } else {
          suppressionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public Builder setSuppressions(
          com.spotify.connectstate.Player.Suppressions.Builder builderForValue) {
        if (suppressionsBuilder_ == null) {
          suppressions_ = builderForValue.build();
          onChanged();
        } else {
          suppressionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public Builder mergeSuppressions(com.spotify.connectstate.Player.Suppressions value) {
        if (suppressionsBuilder_ == null) {
          if (suppressions_ != null) {
            suppressions_ =
              com.spotify.connectstate.Player.Suppressions.newBuilder(suppressions_).mergeFrom(value).buildPartial();
          } else {
            suppressions_ = value;
          }
          onChanged();
        } else {
          suppressionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public Builder clearSuppressions() {
        if (suppressionsBuilder_ == null) {
          suppressions_ = null;
          onChanged();
        } else {
          suppressions_ = null;
          suppressionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public com.spotify.connectstate.Player.Suppressions.Builder getSuppressionsBuilder() {
        
        onChanged();
        return getSuppressionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      public com.spotify.connectstate.Player.SuppressionsOrBuilder getSuppressionsOrBuilder() {
        if (suppressionsBuilder_ != null) {
          return suppressionsBuilder_.getMessageOrBuilder();
        } else {
          return suppressions_ == null ?
              com.spotify.connectstate.Player.Suppressions.getDefaultInstance() : suppressions_;
        }
      }
      /**
       * <code>.connectstate.Suppressions suppressions = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Suppressions, com.spotify.connectstate.Player.Suppressions.Builder, com.spotify.connectstate.Player.SuppressionsOrBuilder> 
          getSuppressionsFieldBuilder() {
        if (suppressionsBuilder_ == null) {
          suppressionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.Suppressions, com.spotify.connectstate.Player.Suppressions.Builder, com.spotify.connectstate.Player.SuppressionsOrBuilder>(
                  getSuppressions(),
                  getParentForChildren(),
                  isClean());
          suppressions_ = null;
        }
        return suppressionsBuilder_;
      }

      private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> prevTracks_ =
        java.util.Collections.emptyList();
      private void ensurePrevTracksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          prevTracks_ = new java.util.ArrayList<com.spotify.connectstate.Player.ProvidedTrack>(prevTracks_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> prevTracksBuilder_;

      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getPrevTracksList() {
        if (prevTracksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(prevTracks_);
        } else {
          return prevTracksBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public int getPrevTracksCount() {
        if (prevTracksBuilder_ == null) {
          return prevTracks_.size();
        } else {
          return prevTracksBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack getPrevTracks(int index) {
        if (prevTracksBuilder_ == null) {
          return prevTracks_.get(index);
        } else {
          return prevTracksBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder setPrevTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (prevTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePrevTracksIsMutable();
          prevTracks_.set(index, value);
          onChanged();
        } else {
          prevTracksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder setPrevTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (prevTracksBuilder_ == null) {
          ensurePrevTracksIsMutable();
          prevTracks_.set(index, builderForValue.build());
          onChanged();
        } else {
          prevTracksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder addPrevTracks(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (prevTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePrevTracksIsMutable();
          prevTracks_.add(value);
          onChanged();
        } else {
          prevTracksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder addPrevTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (prevTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePrevTracksIsMutable();
          prevTracks_.add(index, value);
          onChanged();
        } else {
          prevTracksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder addPrevTracks(
          com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (prevTracksBuilder_ == null) {
          ensurePrevTracksIsMutable();
          prevTracks_.add(builderForValue.build());
          onChanged();
        } else {
          prevTracksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder addPrevTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (prevTracksBuilder_ == null) {
          ensurePrevTracksIsMutable();
          prevTracks_.add(index, builderForValue.build());
          onChanged();
        } else {
          prevTracksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder addAllPrevTracks(
          java.lang.Iterable<? extends com.spotify.connectstate.Player.ProvidedTrack> values) {
        if (prevTracksBuilder_ == null) {
          ensurePrevTracksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, prevTracks_);
          onChanged();
        } else {
          prevTracksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder clearPrevTracks() {
        if (prevTracksBuilder_ == null) {
          prevTracks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          prevTracksBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public Builder removePrevTracks(int index) {
        if (prevTracksBuilder_ == null) {
          ensurePrevTracksIsMutable();
          prevTracks_.remove(index);
          onChanged();
        } else {
          prevTracksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder getPrevTracksBuilder(
          int index) {
        return getPrevTracksFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getPrevTracksOrBuilder(
          int index) {
        if (prevTracksBuilder_ == null) {
          return prevTracks_.get(index);  } else {
          return prevTracksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
           getPrevTracksOrBuilderList() {
        if (prevTracksBuilder_ != null) {
          return prevTracksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(prevTracks_);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addPrevTracksBuilder() {
        return getPrevTracksFieldBuilder().addBuilder(
            com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addPrevTracksBuilder(
          int index) {
        return getPrevTracksFieldBuilder().addBuilder(
            index, com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack prev_tracks = 19;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack.Builder> 
           getPrevTracksBuilderList() {
        return getPrevTracksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
          getPrevTracksFieldBuilder() {
        if (prevTracksBuilder_ == null) {
          prevTracksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder>(
                  prevTracks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          prevTracks_ = null;
        }
        return prevTracksBuilder_;
      }

      private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> nextTracks_ =
        java.util.Collections.emptyList();
      private void ensureNextTracksIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          nextTracks_ = new java.util.ArrayList<com.spotify.connectstate.Player.ProvidedTrack>(nextTracks_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> nextTracksBuilder_;

      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getNextTracksList() {
        if (nextTracksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nextTracks_);
        } else {
          return nextTracksBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public int getNextTracksCount() {
        if (nextTracksBuilder_ == null) {
          return nextTracks_.size();
        } else {
          return nextTracksBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack getNextTracks(int index) {
        if (nextTracksBuilder_ == null) {
          return nextTracks_.get(index);
        } else {
          return nextTracksBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder setNextTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (nextTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNextTracksIsMutable();
          nextTracks_.set(index, value);
          onChanged();
        } else {
          nextTracksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder setNextTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (nextTracksBuilder_ == null) {
          ensureNextTracksIsMutable();
          nextTracks_.set(index, builderForValue.build());
          onChanged();
        } else {
          nextTracksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder addNextTracks(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (nextTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNextTracksIsMutable();
          nextTracks_.add(value);
          onChanged();
        } else {
          nextTracksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder addNextTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (nextTracksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNextTracksIsMutable();
          nextTracks_.add(index, value);
          onChanged();
        } else {
          nextTracksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder addNextTracks(
          com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (nextTracksBuilder_ == null) {
          ensureNextTracksIsMutable();
          nextTracks_.add(builderForValue.build());
          onChanged();
        } else {
          nextTracksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder addNextTracks(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (nextTracksBuilder_ == null) {
          ensureNextTracksIsMutable();
          nextTracks_.add(index, builderForValue.build());
          onChanged();
        } else {
          nextTracksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder addAllNextTracks(
          java.lang.Iterable<? extends com.spotify.connectstate.Player.ProvidedTrack> values) {
        if (nextTracksBuilder_ == null) {
          ensureNextTracksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nextTracks_);
          onChanged();
        } else {
          nextTracksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder clearNextTracks() {
        if (nextTracksBuilder_ == null) {
          nextTracks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          nextTracksBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public Builder removeNextTracks(int index) {
        if (nextTracksBuilder_ == null) {
          ensureNextTracksIsMutable();
          nextTracks_.remove(index);
          onChanged();
        } else {
          nextTracksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder getNextTracksBuilder(
          int index) {
        return getNextTracksFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getNextTracksOrBuilder(
          int index) {
        if (nextTracksBuilder_ == null) {
          return nextTracks_.get(index);  } else {
          return nextTracksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
           getNextTracksOrBuilderList() {
        if (nextTracksBuilder_ != null) {
          return nextTracksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nextTracks_);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addNextTracksBuilder() {
        return getNextTracksFieldBuilder().addBuilder(
            com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addNextTracksBuilder(
          int index) {
        return getNextTracksFieldBuilder().addBuilder(
            index, com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack next_tracks = 20;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack.Builder> 
           getNextTracksBuilderList() {
        return getNextTracksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
          getNextTracksFieldBuilder() {
        if (nextTracksBuilder_ == null) {
          nextTracksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder>(
                  nextTracks_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          nextTracks_ = null;
        }
        return nextTracksBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> contextMetadata_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetContextMetadata() {
        if (contextMetadata_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ContextMetadataDefaultEntryHolder.defaultEntry);
        }
        return contextMetadata_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableContextMetadata() {
        onChanged();;
        if (contextMetadata_ == null) {
          contextMetadata_ = com.google.protobuf.MapField.newMapField(
              ContextMetadataDefaultEntryHolder.defaultEntry);
        }
        if (!contextMetadata_.isMutable()) {
          contextMetadata_ = contextMetadata_.copy();
        }
        return contextMetadata_;
      }

      public int getContextMetadataCount() {
        return internalGetContextMetadata().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public boolean containsContextMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetContextMetadata().getMap().containsKey(key);
      }
      /**
       * Use {@link #getContextMetadataMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getContextMetadata() {
        return getContextMetadataMap();
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getContextMetadataMap() {
        return internalGetContextMetadata().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public java.lang.String getContextMetadataOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetContextMetadata().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public java.lang.String getContextMetadataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetContextMetadata().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearContextMetadata() {
        internalGetMutableContextMetadata().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public Builder removeContextMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableContextMetadata().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableContextMetadata() {
        return internalGetMutableContextMetadata().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */
      public Builder putContextMetadata(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableContextMetadata().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; context_metadata = 21;</code>
       */

      public Builder putAllContextMetadata(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableContextMetadata().getMutableMap()
            .putAll(values);
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> pageMetadata_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetPageMetadata() {
        if (pageMetadata_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              PageMetadataDefaultEntryHolder.defaultEntry);
        }
        return pageMetadata_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutablePageMetadata() {
        onChanged();;
        if (pageMetadata_ == null) {
          pageMetadata_ = com.google.protobuf.MapField.newMapField(
              PageMetadataDefaultEntryHolder.defaultEntry);
        }
        if (!pageMetadata_.isMutable()) {
          pageMetadata_ = pageMetadata_.copy();
        }
        return pageMetadata_;
      }

      public int getPageMetadataCount() {
        return internalGetPageMetadata().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public boolean containsPageMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetPageMetadata().getMap().containsKey(key);
      }
      /**
       * Use {@link #getPageMetadataMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getPageMetadata() {
        return getPageMetadataMap();
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getPageMetadataMap() {
        return internalGetPageMetadata().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public java.lang.String getPageMetadataOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetPageMetadata().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public java.lang.String getPageMetadataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetPageMetadata().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearPageMetadata() {
        internalGetMutablePageMetadata().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public Builder removePageMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutablePageMetadata().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutablePageMetadata() {
        return internalGetMutablePageMetadata().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */
      public Builder putPageMetadata(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutablePageMetadata().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; page_metadata = 22;</code>
       */

      public Builder putAllPageMetadata(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutablePageMetadata().getMutableMap()
            .putAll(values);
        return this;
      }

      private java.lang.Object sessionId_ = "";
      /**
       * <code>string session_id = 23;</code>
       * @return The sessionId.
       */
      public java.lang.String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string session_id = 23;</code>
       * @return The bytes for sessionId.
       */
      public com.google.protobuf.ByteString
          getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string session_id = 23;</code>
       * @param value The sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sessionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearSessionId() {
        
        sessionId_ = getDefaultInstance().getSessionId();
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 23;</code>
       * @param value The bytes for sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sessionId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object queueRevision_ = "";
      /**
       * <code>string queue_revision = 24;</code>
       * @return The queueRevision.
       */
      public java.lang.String getQueueRevision() {
        java.lang.Object ref = queueRevision_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          queueRevision_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string queue_revision = 24;</code>
       * @return The bytes for queueRevision.
       */
      public com.google.protobuf.ByteString
          getQueueRevisionBytes() {
        java.lang.Object ref = queueRevision_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          queueRevision_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string queue_revision = 24;</code>
       * @param value The queueRevision to set.
       * @return This builder for chaining.
       */
      public Builder setQueueRevision(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        queueRevision_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string queue_revision = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearQueueRevision() {
        
        queueRevision_ = getDefaultInstance().getQueueRevision();
        onChanged();
        return this;
      }
      /**
       * <code>string queue_revision = 24;</code>
       * @param value The bytes for queueRevision to set.
       * @return This builder for chaining.
       */
      public Builder setQueueRevisionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        queueRevision_ = value;
        onChanged();
        return this;
      }

      private long position_ ;
      /**
       * <code>int64 position = 25;</code>
       * @return The position.
       */
      public long getPosition() {
        return position_;
      }
      /**
       * <code>int64 position = 25;</code>
       * @param value The position to set.
       * @return This builder for chaining.
       */
      public Builder setPosition(long value) {
        
        position_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 position = 25;</code>
       * @return This builder for chaining.
       */
      public Builder clearPosition() {
        
        position_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object entityUri_ = "";
      /**
       * <code>string entity_uri = 26;</code>
       * @return The entityUri.
       */
      public java.lang.String getEntityUri() {
        java.lang.Object ref = entityUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          entityUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string entity_uri = 26;</code>
       * @return The bytes for entityUri.
       */
      public com.google.protobuf.ByteString
          getEntityUriBytes() {
        java.lang.Object ref = entityUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          entityUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string entity_uri = 26;</code>
       * @param value The entityUri to set.
       * @return This builder for chaining.
       */
      public Builder setEntityUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        entityUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string entity_uri = 26;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityUri() {
        
        entityUri_ = getDefaultInstance().getEntityUri();
        onChanged();
        return this;
      }
      /**
       * <code>string entity_uri = 26;</code>
       * @param value The bytes for entityUri to set.
       * @return This builder for chaining.
       */
      public Builder setEntityUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        entityUri_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> reverse_ =
        java.util.Collections.emptyList();
      private void ensureReverseIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          reverse_ = new java.util.ArrayList<com.spotify.connectstate.Player.ProvidedTrack>(reverse_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> reverseBuilder_;

      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getReverseList() {
        if (reverseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(reverse_);
        } else {
          return reverseBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public int getReverseCount() {
        if (reverseBuilder_ == null) {
          return reverse_.size();
        } else {
          return reverseBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack getReverse(int index) {
        if (reverseBuilder_ == null) {
          return reverse_.get(index);
        } else {
          return reverseBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder setReverse(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (reverseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReverseIsMutable();
          reverse_.set(index, value);
          onChanged();
        } else {
          reverseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder setReverse(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (reverseBuilder_ == null) {
          ensureReverseIsMutable();
          reverse_.set(index, builderForValue.build());
          onChanged();
        } else {
          reverseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder addReverse(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (reverseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReverseIsMutable();
          reverse_.add(value);
          onChanged();
        } else {
          reverseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder addReverse(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (reverseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReverseIsMutable();
          reverse_.add(index, value);
          onChanged();
        } else {
          reverseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder addReverse(
          com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (reverseBuilder_ == null) {
          ensureReverseIsMutable();
          reverse_.add(builderForValue.build());
          onChanged();
        } else {
          reverseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder addReverse(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (reverseBuilder_ == null) {
          ensureReverseIsMutable();
          reverse_.add(index, builderForValue.build());
          onChanged();
        } else {
          reverseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder addAllReverse(
          java.lang.Iterable<? extends com.spotify.connectstate.Player.ProvidedTrack> values) {
        if (reverseBuilder_ == null) {
          ensureReverseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, reverse_);
          onChanged();
        } else {
          reverseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder clearReverse() {
        if (reverseBuilder_ == null) {
          reverse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          reverseBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public Builder removeReverse(int index) {
        if (reverseBuilder_ == null) {
          ensureReverseIsMutable();
          reverse_.remove(index);
          onChanged();
        } else {
          reverseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder getReverseBuilder(
          int index) {
        return getReverseFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getReverseOrBuilder(
          int index) {
        if (reverseBuilder_ == null) {
          return reverse_.get(index);  } else {
          return reverseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
           getReverseOrBuilderList() {
        if (reverseBuilder_ != null) {
          return reverseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(reverse_);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addReverseBuilder() {
        return getReverseFieldBuilder().addBuilder(
            com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addReverseBuilder(
          int index) {
        return getReverseFieldBuilder().addBuilder(
            index, com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack reverse = 27;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack.Builder> 
           getReverseBuilderList() {
        return getReverseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
          getReverseFieldBuilder() {
        if (reverseBuilder_ == null) {
          reverseBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder>(
                  reverse_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          reverse_ = null;
        }
        return reverseBuilder_;
      }

      private java.util.List<com.spotify.connectstate.Player.ProvidedTrack> future_ =
        java.util.Collections.emptyList();
      private void ensureFutureIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          future_ = new java.util.ArrayList<com.spotify.connectstate.Player.ProvidedTrack>(future_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> futureBuilder_;

      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack> getFutureList() {
        if (futureBuilder_ == null) {
          return java.util.Collections.unmodifiableList(future_);
        } else {
          return futureBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public int getFutureCount() {
        if (futureBuilder_ == null) {
          return future_.size();
        } else {
          return futureBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack getFuture(int index) {
        if (futureBuilder_ == null) {
          return future_.get(index);
        } else {
          return futureBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder setFuture(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (futureBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFutureIsMutable();
          future_.set(index, value);
          onChanged();
        } else {
          futureBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder setFuture(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (futureBuilder_ == null) {
          ensureFutureIsMutable();
          future_.set(index, builderForValue.build());
          onChanged();
        } else {
          futureBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder addFuture(com.spotify.connectstate.Player.ProvidedTrack value) {
        if (futureBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFutureIsMutable();
          future_.add(value);
          onChanged();
        } else {
          futureBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder addFuture(
          int index, com.spotify.connectstate.Player.ProvidedTrack value) {
        if (futureBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFutureIsMutable();
          future_.add(index, value);
          onChanged();
        } else {
          futureBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder addFuture(
          com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (futureBuilder_ == null) {
          ensureFutureIsMutable();
          future_.add(builderForValue.build());
          onChanged();
        } else {
          futureBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder addFuture(
          int index, com.spotify.connectstate.Player.ProvidedTrack.Builder builderForValue) {
        if (futureBuilder_ == null) {
          ensureFutureIsMutable();
          future_.add(index, builderForValue.build());
          onChanged();
        } else {
          futureBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder addAllFuture(
          java.lang.Iterable<? extends com.spotify.connectstate.Player.ProvidedTrack> values) {
        if (futureBuilder_ == null) {
          ensureFutureIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, future_);
          onChanged();
        } else {
          futureBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder clearFuture() {
        if (futureBuilder_ == null) {
          future_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          futureBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public Builder removeFuture(int index) {
        if (futureBuilder_ == null) {
          ensureFutureIsMutable();
          future_.remove(index);
          onChanged();
        } else {
          futureBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder getFutureBuilder(
          int index) {
        return getFutureFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrackOrBuilder getFutureOrBuilder(
          int index) {
        if (futureBuilder_ == null) {
          return future_.get(index);  } else {
          return futureBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public java.util.List<? extends com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
           getFutureOrBuilderList() {
        if (futureBuilder_ != null) {
          return futureBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(future_);
        }
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addFutureBuilder() {
        return getFutureFieldBuilder().addBuilder(
            com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public com.spotify.connectstate.Player.ProvidedTrack.Builder addFutureBuilder(
          int index) {
        return getFutureFieldBuilder().addBuilder(
            index, com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance());
      }
      /**
       * <code>repeated .connectstate.ProvidedTrack future = 28;</code>
       */
      public java.util.List<com.spotify.connectstate.Player.ProvidedTrack.Builder> 
           getFutureBuilderList() {
        return getFutureFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder> 
          getFutureFieldBuilder() {
        if (futureBuilder_ == null) {
          futureBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.spotify.connectstate.Player.ProvidedTrack, com.spotify.connectstate.Player.ProvidedTrack.Builder, com.spotify.connectstate.Player.ProvidedTrackOrBuilder>(
                  future_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          future_ = null;
        }
        return futureBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.PlayerState)
    }

    // @@protoc_insertion_point(class_scope:connectstate.PlayerState)
    private static final com.spotify.connectstate.Player.PlayerState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.PlayerState();
    }

    public static com.spotify.connectstate.Player.PlayerState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PlayerState>
        PARSER = new com.google.protobuf.AbstractParser<PlayerState>() {
      @java.lang.Override
      public PlayerState parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.PlayerState getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProvidedTrackOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.ProvidedTrack)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string uri = 1;</code>
     * @return The uri.
     */
    java.lang.String getUri();
    /**
     * <code>string uri = 1;</code>
     * @return The bytes for uri.
     */
    com.google.protobuf.ByteString
        getUriBytes();

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

    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */
    int getMetadataCount();
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */
    boolean containsMetadata(
        java.lang.String key);
    /**
     * Use {@link #getMetadataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getMetadata();
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getMetadataMap();
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    java.lang.String getMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    java.lang.String getMetadataOrThrow(
        java.lang.String key);

    /**
     * <code>repeated string removed = 4;</code>
     * @return A list containing the removed.
     */
    java.util.List<java.lang.String>
        getRemovedList();
    /**
     * <code>repeated string removed = 4;</code>
     * @return The count of removed.
     */
    int getRemovedCount();
    /**
     * <code>repeated string removed = 4;</code>
     * @param index The index of the element to return.
     * @return The removed at the given index.
     */
    java.lang.String getRemoved(int index);
    /**
     * <code>repeated string removed = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the removed at the given index.
     */
    com.google.protobuf.ByteString
        getRemovedBytes(int index);

    /**
     * <code>repeated string blocked = 5;</code>
     * @return A list containing the blocked.
     */
    java.util.List<java.lang.String>
        getBlockedList();
    /**
     * <code>repeated string blocked = 5;</code>
     * @return The count of blocked.
     */
    int getBlockedCount();
    /**
     * <code>repeated string blocked = 5;</code>
     * @param index The index of the element to return.
     * @return The blocked at the given index.
     */
    java.lang.String getBlocked(int index);
    /**
     * <code>repeated string blocked = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the blocked at the given index.
     */
    com.google.protobuf.ByteString
        getBlockedBytes(int index);

    /**
     * <code>string provider = 6;</code>
     * @return The provider.
     */
    java.lang.String getProvider();
    /**
     * <code>string provider = 6;</code>
     * @return The bytes for provider.
     */
    com.google.protobuf.ByteString
        getProviderBytes();

    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     * @return Whether the restrictions field is set.
     */
    boolean hasRestrictions();
    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     * @return The restrictions.
     */
    com.spotify.connectstate.Player.Restrictions getRestrictions();
    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     */
    com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder();

    /**
     * <code>string album_uri = 8;</code>
     * @return The albumUri.
     */
    java.lang.String getAlbumUri();
    /**
     * <code>string album_uri = 8;</code>
     * @return The bytes for albumUri.
     */
    com.google.protobuf.ByteString
        getAlbumUriBytes();

    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @return A list containing the disallowReasons.
     */
    java.util.List<java.lang.String>
        getDisallowReasonsList();
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @return The count of disallowReasons.
     */
    int getDisallowReasonsCount();
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @param index The index of the element to return.
     * @return The disallowReasons at the given index.
     */
    java.lang.String getDisallowReasons(int index);
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowReasonsBytes(int index);

    /**
     * <code>string artist_uri = 10;</code>
     * @return The artistUri.
     */
    java.lang.String getArtistUri();
    /**
     * <code>string artist_uri = 10;</code>
     * @return The bytes for artistUri.
     */
    com.google.protobuf.ByteString
        getArtistUriBytes();

    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @return A list containing the disallowUndecided.
     */
    java.util.List<java.lang.String>
        getDisallowUndecidedList();
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @return The count of disallowUndecided.
     */
    int getDisallowUndecidedCount();
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @param index The index of the element to return.
     * @return The disallowUndecided at the given index.
     */
    java.lang.String getDisallowUndecided(int index);
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowUndecided at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowUndecidedBytes(int index);
  }
  /**
   * Protobuf type {@code connectstate.ProvidedTrack}
   */
  public  static final class ProvidedTrack extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.ProvidedTrack)
      ProvidedTrackOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ProvidedTrack.newBuilder() to construct.
    private ProvidedTrack(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ProvidedTrack() {
      uri_ = "";
      uid_ = "";
      removed_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      blocked_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      provider_ = "";
      albumUri_ = "";
      disallowReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      artistUri_ = "";
      disallowUndecided_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 3:
          return internalGetMetadata();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.ProvidedTrack.class, com.spotify.connectstate.Player.ProvidedTrack.Builder.class);
    }

    public static final int URI_FIELD_NUMBER = 1;
    private volatile java.lang.Object uri_;
    /**
     * <code>string uri = 1;</code>
     * @return The uri.
     */
    public java.lang.String getUri() {
      java.lang.Object ref = uri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        uri_ = s;
        return s;
      }
    }
    /**
     * <code>string uri = 1;</code>
     * @return The bytes for uri.
     */
    public com.google.protobuf.ByteString
        getUriBytes() {
      java.lang.Object ref = uri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UID_FIELD_NUMBER = 2;
    private volatile java.lang.Object uid_;
    /**
     * <code>string uid = 2;</code>
     * @return The uid.
     */
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        uid_ = s;
        return s;
      }
    }
    /**
     * <code>string uid = 2;</code>
     * @return The bytes for uid.
     */
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METADATA_FIELD_NUMBER = 3;
    private static final class MetadataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_MetadataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> metadata_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMetadata() {
      if (metadata_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MetadataDefaultEntryHolder.defaultEntry);
      }
      return metadata_;
    }

    public int getMetadataCount() {
      return internalGetMetadata().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    public boolean containsMetadata(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetMetadata().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMetadataMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
      return getMetadataMap();
    }
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
      return internalGetMetadata().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    public java.lang.String getMetadataOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMetadata().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; metadata = 3;</code>
     */

    public java.lang.String getMetadataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMetadata().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int REMOVED_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList removed_;
    /**
     * <code>repeated string removed = 4;</code>
     * @return A list containing the removed.
     */
    public com.google.protobuf.ProtocolStringList
        getRemovedList() {
      return removed_;
    }
    /**
     * <code>repeated string removed = 4;</code>
     * @return The count of removed.
     */
    public int getRemovedCount() {
      return removed_.size();
    }
    /**
     * <code>repeated string removed = 4;</code>
     * @param index The index of the element to return.
     * @return The removed at the given index.
     */
    public java.lang.String getRemoved(int index) {
      return removed_.get(index);
    }
    /**
     * <code>repeated string removed = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the removed at the given index.
     */
    public com.google.protobuf.ByteString
        getRemovedBytes(int index) {
      return removed_.getByteString(index);
    }

    public static final int BLOCKED_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList blocked_;
    /**
     * <code>repeated string blocked = 5;</code>
     * @return A list containing the blocked.
     */
    public com.google.protobuf.ProtocolStringList
        getBlockedList() {
      return blocked_;
    }
    /**
     * <code>repeated string blocked = 5;</code>
     * @return The count of blocked.
     */
    public int getBlockedCount() {
      return blocked_.size();
    }
    /**
     * <code>repeated string blocked = 5;</code>
     * @param index The index of the element to return.
     * @return The blocked at the given index.
     */
    public java.lang.String getBlocked(int index) {
      return blocked_.get(index);
    }
    /**
     * <code>repeated string blocked = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the blocked at the given index.
     */
    public com.google.protobuf.ByteString
        getBlockedBytes(int index) {
      return blocked_.getByteString(index);
    }

    public static final int PROVIDER_FIELD_NUMBER = 6;
    private volatile java.lang.Object provider_;
    /**
     * <code>string provider = 6;</code>
     * @return The provider.
     */
    public java.lang.String getProvider() {
      java.lang.Object ref = provider_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        provider_ = s;
        return s;
      }
    }
    /**
     * <code>string provider = 6;</code>
     * @return The bytes for provider.
     */
    public com.google.protobuf.ByteString
        getProviderBytes() {
      java.lang.Object ref = provider_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        provider_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESTRICTIONS_FIELD_NUMBER = 7;
    private com.spotify.connectstate.Player.Restrictions restrictions_;
    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     * @return Whether the restrictions field is set.
     */
    public boolean hasRestrictions() {
      return restrictions_ != null;
    }
    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     * @return The restrictions.
     */
    public com.spotify.connectstate.Player.Restrictions getRestrictions() {
      return restrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
    }
    /**
     * <code>.connectstate.Restrictions restrictions = 7;</code>
     */
    public com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder() {
      return getRestrictions();
    }

    public static final int ALBUM_URI_FIELD_NUMBER = 8;
    private volatile java.lang.Object albumUri_;
    /**
     * <code>string album_uri = 8;</code>
     * @return The albumUri.
     */
    public java.lang.String getAlbumUri() {
      java.lang.Object ref = albumUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        albumUri_ = s;
        return s;
      }
    }
    /**
     * <code>string album_uri = 8;</code>
     * @return The bytes for albumUri.
     */
    public com.google.protobuf.ByteString
        getAlbumUriBytes() {
      java.lang.Object ref = albumUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        albumUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISALLOW_REASONS_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList disallowReasons_;
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @return A list containing the disallowReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowReasonsList() {
      return disallowReasons_;
    }
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @return The count of disallowReasons.
     */
    public int getDisallowReasonsCount() {
      return disallowReasons_.size();
    }
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @param index The index of the element to return.
     * @return The disallowReasons at the given index.
     */
    public java.lang.String getDisallowReasons(int index) {
      return disallowReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_reasons = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowReasonsBytes(int index) {
      return disallowReasons_.getByteString(index);
    }

    public static final int ARTIST_URI_FIELD_NUMBER = 10;
    private volatile java.lang.Object artistUri_;
    /**
     * <code>string artist_uri = 10;</code>
     * @return The artistUri.
     */
    public java.lang.String getArtistUri() {
      java.lang.Object ref = artistUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        artistUri_ = s;
        return s;
      }
    }
    /**
     * <code>string artist_uri = 10;</code>
     * @return The bytes for artistUri.
     */
    public com.google.protobuf.ByteString
        getArtistUriBytes() {
      java.lang.Object ref = artistUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        artistUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISALLOW_UNDECIDED_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList disallowUndecided_;
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @return A list containing the disallowUndecided.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowUndecidedList() {
      return disallowUndecided_;
    }
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @return The count of disallowUndecided.
     */
    public int getDisallowUndecidedCount() {
      return disallowUndecided_.size();
    }
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @param index The index of the element to return.
     * @return The disallowUndecided at the given index.
     */
    public java.lang.String getDisallowUndecided(int index) {
      return disallowUndecided_.get(index);
    }
    /**
     * <code>repeated string disallow_undecided = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowUndecided at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowUndecidedBytes(int index) {
      return disallowUndecided_.getByteString(index);
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.ProvidedTrack prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.ProvidedTrack}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.ProvidedTrack)
        com.spotify.connectstate.Player.ProvidedTrackOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.ProvidedTrack.class, com.spotify.connectstate.Player.ProvidedTrack.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.ProvidedTrack.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        uid_ = "";

        internalGetMutableMetadata().clear();
        removed_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        blocked_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        provider_ = "";

        if (restrictionsBuilder_ == null) {
          restrictions_ = null;
        } else {
          restrictions_ = null;
          restrictionsBuilder_ = null;
        }
        albumUri_ = "";

        disallowReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        artistUri_ = "";

        disallowUndecided_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ProvidedTrack_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ProvidedTrack getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.ProvidedTrack.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ProvidedTrack build() {
        com.spotify.connectstate.Player.ProvidedTrack result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ProvidedTrack buildPartial() {
        com.spotify.connectstate.Player.ProvidedTrack result = new com.spotify.connectstate.Player.ProvidedTrack(this);
        int from_bitField0_ = bitField0_;
        result.uri_ = uri_;
        result.uid_ = uid_;
        result.metadata_ = internalGetMetadata();
        result.metadata_.makeImmutable();
        if (((bitField0_ & 0x00000002) != 0)) {
          removed_ = removed_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.removed_ = removed_;
        if (((bitField0_ & 0x00000004) != 0)) {
          blocked_ = blocked_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.blocked_ = blocked_;
        result.provider_ = provider_;
        if (restrictionsBuilder_ == null) {
          result.restrictions_ = restrictions_;
        } else {
          result.restrictions_ = restrictionsBuilder_.build();
        }
        result.albumUri_ = albumUri_;
        if (((bitField0_ & 0x00000008) != 0)) {
          disallowReasons_ = disallowReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.disallowReasons_ = disallowReasons_;
        result.artistUri_ = artistUri_;
        if (((bitField0_ & 0x00000010) != 0)) {
          disallowUndecided_ = disallowUndecided_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.disallowUndecided_ = disallowUndecided_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      private int bitField0_;

      private java.lang.Object uri_ = "";
      /**
       * <code>string uri = 1;</code>
       * @return The uri.
       */
      public java.lang.String getUri() {
        java.lang.Object ref = uri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string uri = 1;</code>
       * @return The bytes for uri.
       */
      public com.google.protobuf.ByteString
          getUriBytes() {
        java.lang.Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string uri = 1;</code>
       * @param value The uri to set.
       * @return This builder for chaining.
       */
      public Builder setUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        uri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string uri = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUri() {
        
        uri_ = getDefaultInstance().getUri();
        onChanged();
        return this;
      }
      /**
       * <code>string uri = 1;</code>
       * @param value The bytes for uri to set.
       * @return This builder for chaining.
       */
      public Builder setUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        uri_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object uid_ = "";
      /**
       * <code>string uid = 2;</code>
       * @return The uid.
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string uid = 2;</code>
       * @return The bytes for uid.
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string uid = 2;</code>
       * @param value The uid to set.
       * @return This builder for chaining.
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string uid = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        
        uid_ = getDefaultInstance().getUid();
        onChanged();
        return this;
      }
      /**
       * <code>string uid = 2;</code>
       * @param value The bytes for uid to set.
       * @return This builder for chaining.
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        uid_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> metadata_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMetadata() {
        if (metadata_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MetadataDefaultEntryHolder.defaultEntry);
        }
        return metadata_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableMetadata() {
        onChanged();;
        if (metadata_ == null) {
          metadata_ = com.google.protobuf.MapField.newMapField(
              MetadataDefaultEntryHolder.defaultEntry);
        }
        if (!metadata_.isMutable()) {
          metadata_ = metadata_.copy();
        }
        return metadata_;
      }

      public int getMetadataCount() {
        return internalGetMetadata().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public boolean containsMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetMetadata().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMetadataMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
        return getMetadataMap();
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
        return internalGetMetadata().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public java.lang.String getMetadataOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMetadata().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public java.lang.String getMetadataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMetadata().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMetadata() {
        internalGetMutableMetadata().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public Builder removeMetadata(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableMetadata().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableMetadata() {
        return internalGetMutableMetadata().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */
      public Builder putMetadata(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableMetadata().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; metadata = 3;</code>
       */

      public Builder putAllMetadata(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableMetadata().getMutableMap()
            .putAll(values);
        return this;
      }

      private com.google.protobuf.LazyStringList removed_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRemovedIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          removed_ = new com.google.protobuf.LazyStringArrayList(removed_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @return A list containing the removed.
       */
      public com.google.protobuf.ProtocolStringList
          getRemovedList() {
        return removed_.getUnmodifiableView();
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @return The count of removed.
       */
      public int getRemovedCount() {
        return removed_.size();
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param index The index of the element to return.
       * @return The removed at the given index.
       */
      public java.lang.String getRemoved(int index) {
        return removed_.get(index);
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the removed at the given index.
       */
      public com.google.protobuf.ByteString
          getRemovedBytes(int index) {
        return removed_.getByteString(index);
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param index The index to set the value at.
       * @param value The removed to set.
       * @return This builder for chaining.
       */
      public Builder setRemoved(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRemovedIsMutable();
        removed_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param value The removed to add.
       * @return This builder for chaining.
       */
      public Builder addRemoved(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRemovedIsMutable();
        removed_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param values The removed to add.
       * @return This builder for chaining.
       */
      public Builder addAllRemoved(
          java.lang.Iterable<java.lang.String> values) {
        ensureRemovedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, removed_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRemoved() {
        removed_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string removed = 4;</code>
       * @param value The bytes of the removed to add.
       * @return This builder for chaining.
       */
      public Builder addRemovedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureRemovedIsMutable();
        removed_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList blocked_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureBlockedIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          blocked_ = new com.google.protobuf.LazyStringArrayList(blocked_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @return A list containing the blocked.
       */
      public com.google.protobuf.ProtocolStringList
          getBlockedList() {
        return blocked_.getUnmodifiableView();
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @return The count of blocked.
       */
      public int getBlockedCount() {
        return blocked_.size();
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param index The index of the element to return.
       * @return The blocked at the given index.
       */
      public java.lang.String getBlocked(int index) {
        return blocked_.get(index);
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the blocked at the given index.
       */
      public com.google.protobuf.ByteString
          getBlockedBytes(int index) {
        return blocked_.getByteString(index);
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param index The index to set the value at.
       * @param value The blocked to set.
       * @return This builder for chaining.
       */
      public Builder setBlocked(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBlockedIsMutable();
        blocked_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param value The blocked to add.
       * @return This builder for chaining.
       */
      public Builder addBlocked(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBlockedIsMutable();
        blocked_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param values The blocked to add.
       * @return This builder for chaining.
       */
      public Builder addAllBlocked(
          java.lang.Iterable<java.lang.String> values) {
        ensureBlockedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, blocked_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearBlocked() {
        blocked_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string blocked = 5;</code>
       * @param value The bytes of the blocked to add.
       * @return This builder for chaining.
       */
      public Builder addBlockedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureBlockedIsMutable();
        blocked_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object provider_ = "";
      /**
       * <code>string provider = 6;</code>
       * @return The provider.
       */
      public java.lang.String getProvider() {
        java.lang.Object ref = provider_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          provider_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string provider = 6;</code>
       * @return The bytes for provider.
       */
      public com.google.protobuf.ByteString
          getProviderBytes() {
        java.lang.Object ref = provider_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          provider_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string provider = 6;</code>
       * @param value The provider to set.
       * @return This builder for chaining.
       */
      public Builder setProvider(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        provider_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string provider = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearProvider() {
        
        provider_ = getDefaultInstance().getProvider();
        onChanged();
        return this;
      }
      /**
       * <code>string provider = 6;</code>
       * @param value The bytes for provider to set.
       * @return This builder for chaining.
       */
      public Builder setProviderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        provider_ = value;
        onChanged();
        return this;
      }

      private com.spotify.connectstate.Player.Restrictions restrictions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> restrictionsBuilder_;
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       * @return Whether the restrictions field is set.
       */
      public boolean hasRestrictions() {
        return restrictionsBuilder_ != null || restrictions_ != null;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       * @return The restrictions.
       */
      public com.spotify.connectstate.Player.Restrictions getRestrictions() {
        if (restrictionsBuilder_ == null) {
          return restrictions_ == null ? com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
        } else {
          return restrictionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public Builder setRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (restrictionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          restrictions_ = value;
          onChanged();
        } else {
          restrictionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public Builder setRestrictions(
          com.spotify.connectstate.Player.Restrictions.Builder builderForValue) {
        if (restrictionsBuilder_ == null) {
          restrictions_ = builderForValue.build();
          onChanged();
        } else {
          restrictionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public Builder mergeRestrictions(com.spotify.connectstate.Player.Restrictions value) {
        if (restrictionsBuilder_ == null) {
          if (restrictions_ != null) {
            restrictions_ =
              com.spotify.connectstate.Player.Restrictions.newBuilder(restrictions_).mergeFrom(value).buildPartial();
          } else {
            restrictions_ = value;
          }
          onChanged();
        } else {
          restrictionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public Builder clearRestrictions() {
        if (restrictionsBuilder_ == null) {
          restrictions_ = null;
          onChanged();
        } else {
          restrictions_ = null;
          restrictionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public com.spotify.connectstate.Player.Restrictions.Builder getRestrictionsBuilder() {
        
        onChanged();
        return getRestrictionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      public com.spotify.connectstate.Player.RestrictionsOrBuilder getRestrictionsOrBuilder() {
        if (restrictionsBuilder_ != null) {
          return restrictionsBuilder_.getMessageOrBuilder();
        } else {
          return restrictions_ == null ?
              com.spotify.connectstate.Player.Restrictions.getDefaultInstance() : restrictions_;
        }
      }
      /**
       * <code>.connectstate.Restrictions restrictions = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder> 
          getRestrictionsFieldBuilder() {
        if (restrictionsBuilder_ == null) {
          restrictionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.connectstate.Player.Restrictions, com.spotify.connectstate.Player.Restrictions.Builder, com.spotify.connectstate.Player.RestrictionsOrBuilder>(
                  getRestrictions(),
                  getParentForChildren(),
                  isClean());
          restrictions_ = null;
        }
        return restrictionsBuilder_;
      }

      private java.lang.Object albumUri_ = "";
      /**
       * <code>string album_uri = 8;</code>
       * @return The albumUri.
       */
      public java.lang.String getAlbumUri() {
        java.lang.Object ref = albumUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          albumUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string album_uri = 8;</code>
       * @return The bytes for albumUri.
       */
      public com.google.protobuf.ByteString
          getAlbumUriBytes() {
        java.lang.Object ref = albumUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          albumUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string album_uri = 8;</code>
       * @param value The albumUri to set.
       * @return This builder for chaining.
       */
      public Builder setAlbumUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        albumUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string album_uri = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlbumUri() {
        
        albumUri_ = getDefaultInstance().getAlbumUri();
        onChanged();
        return this;
      }
      /**
       * <code>string album_uri = 8;</code>
       * @param value The bytes for albumUri to set.
       * @return This builder for chaining.
       */
      public Builder setAlbumUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        albumUri_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowReasonsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          disallowReasons_ = new com.google.protobuf.LazyStringArrayList(disallowReasons_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @return A list containing the disallowReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowReasonsList() {
        return disallowReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @return The count of disallowReasons.
       */
      public int getDisallowReasonsCount() {
        return disallowReasons_.size();
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param index The index of the element to return.
       * @return The disallowReasons at the given index.
       */
      public java.lang.String getDisallowReasons(int index) {
        return disallowReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowReasonsBytes(int index) {
        return disallowReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param index The index to set the value at.
       * @param value The disallowReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReasonsIsMutable();
        disallowReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param value The disallowReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReasonsIsMutable();
        disallowReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param values The disallowReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowReasons() {
        disallowReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reasons = 9;</code>
       * @param value The bytes of the disallowReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowReasonsIsMutable();
        disallowReasons_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object artistUri_ = "";
      /**
       * <code>string artist_uri = 10;</code>
       * @return The artistUri.
       */
      public java.lang.String getArtistUri() {
        java.lang.Object ref = artistUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          artistUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string artist_uri = 10;</code>
       * @return The bytes for artistUri.
       */
      public com.google.protobuf.ByteString
          getArtistUriBytes() {
        java.lang.Object ref = artistUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          artistUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string artist_uri = 10;</code>
       * @param value The artistUri to set.
       * @return This builder for chaining.
       */
      public Builder setArtistUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        artistUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string artist_uri = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearArtistUri() {
        
        artistUri_ = getDefaultInstance().getArtistUri();
        onChanged();
        return this;
      }
      /**
       * <code>string artist_uri = 10;</code>
       * @param value The bytes for artistUri to set.
       * @return This builder for chaining.
       */
      public Builder setArtistUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        artistUri_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowUndecided_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowUndecidedIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          disallowUndecided_ = new com.google.protobuf.LazyStringArrayList(disallowUndecided_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @return A list containing the disallowUndecided.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowUndecidedList() {
        return disallowUndecided_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @return The count of disallowUndecided.
       */
      public int getDisallowUndecidedCount() {
        return disallowUndecided_.size();
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param index The index of the element to return.
       * @return The disallowUndecided at the given index.
       */
      public java.lang.String getDisallowUndecided(int index) {
        return disallowUndecided_.get(index);
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowUndecided at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowUndecidedBytes(int index) {
        return disallowUndecided_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param index The index to set the value at.
       * @param value The disallowUndecided to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowUndecided(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowUndecidedIsMutable();
        disallowUndecided_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param value The disallowUndecided to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowUndecided(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowUndecidedIsMutable();
        disallowUndecided_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param values The disallowUndecided to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowUndecided(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowUndecidedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowUndecided_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowUndecided() {
        disallowUndecided_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_undecided = 11;</code>
       * @param value The bytes of the disallowUndecided to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowUndecidedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowUndecidedIsMutable();
        disallowUndecided_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.ProvidedTrack)
    }

    // @@protoc_insertion_point(class_scope:connectstate.ProvidedTrack)
    private static final com.spotify.connectstate.Player.ProvidedTrack DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.ProvidedTrack();
    }

    public static com.spotify.connectstate.Player.ProvidedTrack getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ProvidedTrack>
        PARSER = new com.google.protobuf.AbstractParser<ProvidedTrack>() {
      @java.lang.Override
      public ProvidedTrack parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.ProvidedTrack getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextIndexOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.ContextIndex)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint32 page = 1;</code>
     * @return The page.
     */
    int getPage();

    /**
     * <code>uint32 track = 2;</code>
     * @return The track.
     */
    int getTrack();
  }
  /**
   * Protobuf type {@code connectstate.ContextIndex}
   */
  public  static final class ContextIndex extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.ContextIndex)
      ContextIndexOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextIndex.newBuilder() to construct.
    private ContextIndex(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextIndex() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ContextIndex_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ContextIndex_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.ContextIndex.class, com.spotify.connectstate.Player.ContextIndex.Builder.class);
    }

    public static final int PAGE_FIELD_NUMBER = 1;
    private int page_;
    /**
     * <code>uint32 page = 1;</code>
     * @return The page.
     */
    public int getPage() {
      return page_;
    }

    public static final int TRACK_FIELD_NUMBER = 2;
    private int track_;
    /**
     * <code>uint32 track = 2;</code>
     * @return The track.
     */
    public int getTrack() {
      return track_;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.ContextIndex prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.ContextIndex}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.ContextIndex)
        com.spotify.connectstate.Player.ContextIndexOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextIndex_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextIndex_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.ContextIndex.class, com.spotify.connectstate.Player.ContextIndex.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.ContextIndex.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        track_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextIndex_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextIndex getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.ContextIndex.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextIndex build() {
        com.spotify.connectstate.Player.ContextIndex result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextIndex buildPartial() {
        com.spotify.connectstate.Player.ContextIndex result = new com.spotify.connectstate.Player.ContextIndex(this);
        result.page_ = page_;
        result.track_ = track_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      private int page_ ;
      /**
       * <code>uint32 page = 1;</code>
       * @return The page.
       */
      public int getPage() {
        return page_;
      }
      /**
       * <code>uint32 page = 1;</code>
       * @param value The page to set.
       * @return This builder for chaining.
       */
      public Builder setPage(int value) {
        
        page_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 page = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPage() {
        
        page_ = 0;
        onChanged();
        return this;
      }

      private int track_ ;
      /**
       * <code>uint32 track = 2;</code>
       * @return The track.
       */
      public int getTrack() {
        return track_;
      }
      /**
       * <code>uint32 track = 2;</code>
       * @param value The track to set.
       * @return This builder for chaining.
       */
      public Builder setTrack(int value) {
        
        track_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 track = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrack() {
        
        track_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.ContextIndex)
    }

    // @@protoc_insertion_point(class_scope:connectstate.ContextIndex)
    private static final com.spotify.connectstate.Player.ContextIndex DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.ContextIndex();
    }

    public static com.spotify.connectstate.Player.ContextIndex getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ContextIndex>
        PARSER = new com.google.protobuf.AbstractParser<ContextIndex>() {
      @java.lang.Override
      public ContextIndex parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.ContextIndex getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RestrictionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.Restrictions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @return A list containing the disallowPausingReasons.
     */
    java.util.List<java.lang.String>
        getDisallowPausingReasonsList();
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @return The count of disallowPausingReasons.
     */
    int getDisallowPausingReasonsCount();
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @param index The index of the element to return.
     * @return The disallowPausingReasons at the given index.
     */
    java.lang.String getDisallowPausingReasons(int index);
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPausingReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowPausingReasonsBytes(int index);

    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @return A list containing the disallowResumingReasons.
     */
    java.util.List<java.lang.String>
        getDisallowResumingReasonsList();
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @return The count of disallowResumingReasons.
     */
    int getDisallowResumingReasonsCount();
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @param index The index of the element to return.
     * @return The disallowResumingReasons at the given index.
     */
    java.lang.String getDisallowResumingReasons(int index);
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowResumingReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowResumingReasonsBytes(int index);

    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @return A list containing the disallowSeekingReasons.
     */
    java.util.List<java.lang.String>
        getDisallowSeekingReasonsList();
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @return The count of disallowSeekingReasons.
     */
    int getDisallowSeekingReasonsCount();
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @param index The index of the element to return.
     * @return The disallowSeekingReasons at the given index.
     */
    java.lang.String getDisallowSeekingReasons(int index);
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSeekingReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowSeekingReasonsBytes(int index);

    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @return A list containing the disallowPeekingPrevReasons.
     */
    java.util.List<java.lang.String>
        getDisallowPeekingPrevReasonsList();
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @return The count of disallowPeekingPrevReasons.
     */
    int getDisallowPeekingPrevReasonsCount();
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @param index The index of the element to return.
     * @return The disallowPeekingPrevReasons at the given index.
     */
    java.lang.String getDisallowPeekingPrevReasons(int index);
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPeekingPrevReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowPeekingPrevReasonsBytes(int index);

    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @return A list containing the disallowPeekingNextReasons.
     */
    java.util.List<java.lang.String>
        getDisallowPeekingNextReasonsList();
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @return The count of disallowPeekingNextReasons.
     */
    int getDisallowPeekingNextReasonsCount();
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @param index The index of the element to return.
     * @return The disallowPeekingNextReasons at the given index.
     */
    java.lang.String getDisallowPeekingNextReasons(int index);
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPeekingNextReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowPeekingNextReasonsBytes(int index);

    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @return A list containing the disallowSkippingPrevReasons.
     */
    java.util.List<java.lang.String>
        getDisallowSkippingPrevReasonsList();
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @return The count of disallowSkippingPrevReasons.
     */
    int getDisallowSkippingPrevReasonsCount();
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @param index The index of the element to return.
     * @return The disallowSkippingPrevReasons at the given index.
     */
    java.lang.String getDisallowSkippingPrevReasons(int index);
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSkippingPrevReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowSkippingPrevReasonsBytes(int index);

    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @return A list containing the disallowSkippingNextReasons.
     */
    java.util.List<java.lang.String>
        getDisallowSkippingNextReasonsList();
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @return The count of disallowSkippingNextReasons.
     */
    int getDisallowSkippingNextReasonsCount();
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @param index The index of the element to return.
     * @return The disallowSkippingNextReasons at the given index.
     */
    java.lang.String getDisallowSkippingNextReasons(int index);
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSkippingNextReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowSkippingNextReasonsBytes(int index);

    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @return A list containing the disallowTogglingRepeatContextReasons.
     */
    java.util.List<java.lang.String>
        getDisallowTogglingRepeatContextReasonsList();
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @return The count of disallowTogglingRepeatContextReasons.
     */
    int getDisallowTogglingRepeatContextReasonsCount();
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingRepeatContextReasons at the given index.
     */
    java.lang.String getDisallowTogglingRepeatContextReasons(int index);
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingRepeatContextReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowTogglingRepeatContextReasonsBytes(int index);

    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @return A list containing the disallowTogglingRepeatTrackReasons.
     */
    java.util.List<java.lang.String>
        getDisallowTogglingRepeatTrackReasonsList();
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @return The count of disallowTogglingRepeatTrackReasons.
     */
    int getDisallowTogglingRepeatTrackReasonsCount();
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingRepeatTrackReasons at the given index.
     */
    java.lang.String getDisallowTogglingRepeatTrackReasons(int index);
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingRepeatTrackReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowTogglingRepeatTrackReasonsBytes(int index);

    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @return A list containing the disallowTogglingShuffleReasons.
     */
    java.util.List<java.lang.String>
        getDisallowTogglingShuffleReasonsList();
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @return The count of disallowTogglingShuffleReasons.
     */
    int getDisallowTogglingShuffleReasonsCount();
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingShuffleReasons at the given index.
     */
    java.lang.String getDisallowTogglingShuffleReasons(int index);
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingShuffleReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowTogglingShuffleReasonsBytes(int index);

    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @return A list containing the disallowSetQueueReasons.
     */
    java.util.List<java.lang.String>
        getDisallowSetQueueReasonsList();
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @return The count of disallowSetQueueReasons.
     */
    int getDisallowSetQueueReasonsCount();
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @param index The index of the element to return.
     * @return The disallowSetQueueReasons at the given index.
     */
    java.lang.String getDisallowSetQueueReasons(int index);
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSetQueueReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowSetQueueReasonsBytes(int index);

    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @return A list containing the disallowInterruptingPlaybackReasons.
     */
    java.util.List<java.lang.String>
        getDisallowInterruptingPlaybackReasonsList();
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @return The count of disallowInterruptingPlaybackReasons.
     */
    int getDisallowInterruptingPlaybackReasonsCount();
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @param index The index of the element to return.
     * @return The disallowInterruptingPlaybackReasons at the given index.
     */
    java.lang.String getDisallowInterruptingPlaybackReasons(int index);
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInterruptingPlaybackReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowInterruptingPlaybackReasonsBytes(int index);

    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @return A list containing the disallowTransferringPlaybackReasons.
     */
    java.util.List<java.lang.String>
        getDisallowTransferringPlaybackReasonsList();
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @return The count of disallowTransferringPlaybackReasons.
     */
    int getDisallowTransferringPlaybackReasonsCount();
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @param index The index of the element to return.
     * @return The disallowTransferringPlaybackReasons at the given index.
     */
    java.lang.String getDisallowTransferringPlaybackReasons(int index);
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTransferringPlaybackReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowTransferringPlaybackReasonsBytes(int index);

    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @return A list containing the disallowRemoteControlReasons.
     */
    java.util.List<java.lang.String>
        getDisallowRemoteControlReasonsList();
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @return The count of disallowRemoteControlReasons.
     */
    int getDisallowRemoteControlReasonsCount();
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @param index The index of the element to return.
     * @return The disallowRemoteControlReasons at the given index.
     */
    java.lang.String getDisallowRemoteControlReasons(int index);
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemoteControlReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowRemoteControlReasonsBytes(int index);

    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @return A list containing the disallowInsertingIntoNextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowInsertingIntoNextTracksReasonsList();
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @return The count of disallowInsertingIntoNextTracksReasons.
     */
    int getDisallowInsertingIntoNextTracksReasonsCount();
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @param index The index of the element to return.
     * @return The disallowInsertingIntoNextTracksReasons at the given index.
     */
    java.lang.String getDisallowInsertingIntoNextTracksReasons(int index);
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInsertingIntoNextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowInsertingIntoNextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @return A list containing the disallowInsertingIntoContextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowInsertingIntoContextTracksReasonsList();
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @return The count of disallowInsertingIntoContextTracksReasons.
     */
    int getDisallowInsertingIntoContextTracksReasonsCount();
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @param index The index of the element to return.
     * @return The disallowInsertingIntoContextTracksReasons at the given index.
     */
    java.lang.String getDisallowInsertingIntoContextTracksReasons(int index);
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInsertingIntoContextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowInsertingIntoContextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @return A list containing the disallowReorderingInNextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowReorderingInNextTracksReasonsList();
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @return The count of disallowReorderingInNextTracksReasons.
     */
    int getDisallowReorderingInNextTracksReasonsCount();
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @param index The index of the element to return.
     * @return The disallowReorderingInNextTracksReasons at the given index.
     */
    java.lang.String getDisallowReorderingInNextTracksReasons(int index);
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReorderingInNextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowReorderingInNextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @return A list containing the disallowReorderingInContextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowReorderingInContextTracksReasonsList();
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @return The count of disallowReorderingInContextTracksReasons.
     */
    int getDisallowReorderingInContextTracksReasonsCount();
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @param index The index of the element to return.
     * @return The disallowReorderingInContextTracksReasons at the given index.
     */
    java.lang.String getDisallowReorderingInContextTracksReasons(int index);
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReorderingInContextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowReorderingInContextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @return A list containing the disallowRemovingFromNextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowRemovingFromNextTracksReasonsList();
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @return The count of disallowRemovingFromNextTracksReasons.
     */
    int getDisallowRemovingFromNextTracksReasonsCount();
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @param index The index of the element to return.
     * @return The disallowRemovingFromNextTracksReasons at the given index.
     */
    java.lang.String getDisallowRemovingFromNextTracksReasons(int index);
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemovingFromNextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowRemovingFromNextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @return A list containing the disallowRemovingFromContextTracksReasons.
     */
    java.util.List<java.lang.String>
        getDisallowRemovingFromContextTracksReasonsList();
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @return The count of disallowRemovingFromContextTracksReasons.
     */
    int getDisallowRemovingFromContextTracksReasonsCount();
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @param index The index of the element to return.
     * @return The disallowRemovingFromContextTracksReasons at the given index.
     */
    java.lang.String getDisallowRemovingFromContextTracksReasons(int index);
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemovingFromContextTracksReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowRemovingFromContextTracksReasonsBytes(int index);

    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @return A list containing the disallowUpdatingContextReasons.
     */
    java.util.List<java.lang.String>
        getDisallowUpdatingContextReasonsList();
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @return The count of disallowUpdatingContextReasons.
     */
    int getDisallowUpdatingContextReasonsCount();
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @param index The index of the element to return.
     * @return The disallowUpdatingContextReasons at the given index.
     */
    java.lang.String getDisallowUpdatingContextReasons(int index);
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowUpdatingContextReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowUpdatingContextReasonsBytes(int index);

    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @return A list containing the disallowPlayingReasons.
     */
    java.util.List<java.lang.String>
        getDisallowPlayingReasonsList();
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @return The count of disallowPlayingReasons.
     */
    int getDisallowPlayingReasonsCount();
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @param index The index of the element to return.
     * @return The disallowPlayingReasons at the given index.
     */
    java.lang.String getDisallowPlayingReasons(int index);
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPlayingReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowPlayingReasonsBytes(int index);

    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @return A list containing the disallowStoppingReasons.
     */
    java.util.List<java.lang.String>
        getDisallowStoppingReasonsList();
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @return The count of disallowStoppingReasons.
     */
    int getDisallowStoppingReasonsCount();
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @param index The index of the element to return.
     * @return The disallowStoppingReasons at the given index.
     */
    java.lang.String getDisallowStoppingReasons(int index);
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowStoppingReasons at the given index.
     */
    com.google.protobuf.ByteString
        getDisallowStoppingReasonsBytes(int index);
  }
  /**
   * Protobuf type {@code connectstate.Restrictions}
   */
  public  static final class Restrictions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.Restrictions)
      RestrictionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Restrictions.newBuilder() to construct.
    private Restrictions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Restrictions() {
      disallowPausingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowResumingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowSeekingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowPeekingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowPeekingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowSkippingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowSkippingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowTogglingRepeatContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowTogglingRepeatTrackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowTogglingShuffleReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowSetQueueReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowInterruptingPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowTransferringPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowRemoteControlReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowInsertingIntoNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowInsertingIntoContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowReorderingInNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowReorderingInContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowRemovingFromNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowRemovingFromContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowUpdatingContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowPlayingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      disallowStoppingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_Restrictions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_Restrictions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.Restrictions.class, com.spotify.connectstate.Player.Restrictions.Builder.class);
    }

    public static final int DISALLOW_PAUSING_REASONS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList disallowPausingReasons_;
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @return A list containing the disallowPausingReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowPausingReasonsList() {
      return disallowPausingReasons_;
    }
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @return The count of disallowPausingReasons.
     */
    public int getDisallowPausingReasonsCount() {
      return disallowPausingReasons_.size();
    }
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @param index The index of the element to return.
     * @return The disallowPausingReasons at the given index.
     */
    public java.lang.String getDisallowPausingReasons(int index) {
      return disallowPausingReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_pausing_reasons = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPausingReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowPausingReasonsBytes(int index) {
      return disallowPausingReasons_.getByteString(index);
    }

    public static final int DISALLOW_RESUMING_REASONS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList disallowResumingReasons_;
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @return A list containing the disallowResumingReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowResumingReasonsList() {
      return disallowResumingReasons_;
    }
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @return The count of disallowResumingReasons.
     */
    public int getDisallowResumingReasonsCount() {
      return disallowResumingReasons_.size();
    }
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @param index The index of the element to return.
     * @return The disallowResumingReasons at the given index.
     */
    public java.lang.String getDisallowResumingReasons(int index) {
      return disallowResumingReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_resuming_reasons = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowResumingReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowResumingReasonsBytes(int index) {
      return disallowResumingReasons_.getByteString(index);
    }

    public static final int DISALLOW_SEEKING_REASONS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList disallowSeekingReasons_;
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @return A list containing the disallowSeekingReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowSeekingReasonsList() {
      return disallowSeekingReasons_;
    }
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @return The count of disallowSeekingReasons.
     */
    public int getDisallowSeekingReasonsCount() {
      return disallowSeekingReasons_.size();
    }
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @param index The index of the element to return.
     * @return The disallowSeekingReasons at the given index.
     */
    public java.lang.String getDisallowSeekingReasons(int index) {
      return disallowSeekingReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_seeking_reasons = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSeekingReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowSeekingReasonsBytes(int index) {
      return disallowSeekingReasons_.getByteString(index);
    }

    public static final int DISALLOW_PEEKING_PREV_REASONS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList disallowPeekingPrevReasons_;
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @return A list containing the disallowPeekingPrevReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowPeekingPrevReasonsList() {
      return disallowPeekingPrevReasons_;
    }
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @return The count of disallowPeekingPrevReasons.
     */
    public int getDisallowPeekingPrevReasonsCount() {
      return disallowPeekingPrevReasons_.size();
    }
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @param index The index of the element to return.
     * @return The disallowPeekingPrevReasons at the given index.
     */
    public java.lang.String getDisallowPeekingPrevReasons(int index) {
      return disallowPeekingPrevReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPeekingPrevReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowPeekingPrevReasonsBytes(int index) {
      return disallowPeekingPrevReasons_.getByteString(index);
    }

    public static final int DISALLOW_PEEKING_NEXT_REASONS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList disallowPeekingNextReasons_;
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @return A list containing the disallowPeekingNextReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowPeekingNextReasonsList() {
      return disallowPeekingNextReasons_;
    }
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @return The count of disallowPeekingNextReasons.
     */
    public int getDisallowPeekingNextReasonsCount() {
      return disallowPeekingNextReasons_.size();
    }
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @param index The index of the element to return.
     * @return The disallowPeekingNextReasons at the given index.
     */
    public java.lang.String getDisallowPeekingNextReasons(int index) {
      return disallowPeekingNextReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_peeking_next_reasons = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPeekingNextReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowPeekingNextReasonsBytes(int index) {
      return disallowPeekingNextReasons_.getByteString(index);
    }

    public static final int DISALLOW_SKIPPING_PREV_REASONS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList disallowSkippingPrevReasons_;
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @return A list containing the disallowSkippingPrevReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowSkippingPrevReasonsList() {
      return disallowSkippingPrevReasons_;
    }
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @return The count of disallowSkippingPrevReasons.
     */
    public int getDisallowSkippingPrevReasonsCount() {
      return disallowSkippingPrevReasons_.size();
    }
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @param index The index of the element to return.
     * @return The disallowSkippingPrevReasons at the given index.
     */
    public java.lang.String getDisallowSkippingPrevReasons(int index) {
      return disallowSkippingPrevReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSkippingPrevReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowSkippingPrevReasonsBytes(int index) {
      return disallowSkippingPrevReasons_.getByteString(index);
    }

    public static final int DISALLOW_SKIPPING_NEXT_REASONS_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList disallowSkippingNextReasons_;
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @return A list containing the disallowSkippingNextReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowSkippingNextReasonsList() {
      return disallowSkippingNextReasons_;
    }
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @return The count of disallowSkippingNextReasons.
     */
    public int getDisallowSkippingNextReasonsCount() {
      return disallowSkippingNextReasons_.size();
    }
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @param index The index of the element to return.
     * @return The disallowSkippingNextReasons at the given index.
     */
    public java.lang.String getDisallowSkippingNextReasons(int index) {
      return disallowSkippingNextReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_skipping_next_reasons = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSkippingNextReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowSkippingNextReasonsBytes(int index) {
      return disallowSkippingNextReasons_.getByteString(index);
    }

    public static final int DISALLOW_TOGGLING_REPEAT_CONTEXT_REASONS_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList disallowTogglingRepeatContextReasons_;
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @return A list containing the disallowTogglingRepeatContextReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowTogglingRepeatContextReasonsList() {
      return disallowTogglingRepeatContextReasons_;
    }
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @return The count of disallowTogglingRepeatContextReasons.
     */
    public int getDisallowTogglingRepeatContextReasonsCount() {
      return disallowTogglingRepeatContextReasons_.size();
    }
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingRepeatContextReasons at the given index.
     */
    public java.lang.String getDisallowTogglingRepeatContextReasons(int index) {
      return disallowTogglingRepeatContextReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingRepeatContextReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowTogglingRepeatContextReasonsBytes(int index) {
      return disallowTogglingRepeatContextReasons_.getByteString(index);
    }

    public static final int DISALLOW_TOGGLING_REPEAT_TRACK_REASONS_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList disallowTogglingRepeatTrackReasons_;
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @return A list containing the disallowTogglingRepeatTrackReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowTogglingRepeatTrackReasonsList() {
      return disallowTogglingRepeatTrackReasons_;
    }
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @return The count of disallowTogglingRepeatTrackReasons.
     */
    public int getDisallowTogglingRepeatTrackReasonsCount() {
      return disallowTogglingRepeatTrackReasons_.size();
    }
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingRepeatTrackReasons at the given index.
     */
    public java.lang.String getDisallowTogglingRepeatTrackReasons(int index) {
      return disallowTogglingRepeatTrackReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingRepeatTrackReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowTogglingRepeatTrackReasonsBytes(int index) {
      return disallowTogglingRepeatTrackReasons_.getByteString(index);
    }

    public static final int DISALLOW_TOGGLING_SHUFFLE_REASONS_FIELD_NUMBER = 10;
    private com.google.protobuf.LazyStringList disallowTogglingShuffleReasons_;
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @return A list containing the disallowTogglingShuffleReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowTogglingShuffleReasonsList() {
      return disallowTogglingShuffleReasons_;
    }
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @return The count of disallowTogglingShuffleReasons.
     */
    public int getDisallowTogglingShuffleReasonsCount() {
      return disallowTogglingShuffleReasons_.size();
    }
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @param index The index of the element to return.
     * @return The disallowTogglingShuffleReasons at the given index.
     */
    public java.lang.String getDisallowTogglingShuffleReasons(int index) {
      return disallowTogglingShuffleReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTogglingShuffleReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowTogglingShuffleReasonsBytes(int index) {
      return disallowTogglingShuffleReasons_.getByteString(index);
    }

    public static final int DISALLOW_SET_QUEUE_REASONS_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList disallowSetQueueReasons_;
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @return A list containing the disallowSetQueueReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowSetQueueReasonsList() {
      return disallowSetQueueReasons_;
    }
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @return The count of disallowSetQueueReasons.
     */
    public int getDisallowSetQueueReasonsCount() {
      return disallowSetQueueReasons_.size();
    }
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @param index The index of the element to return.
     * @return The disallowSetQueueReasons at the given index.
     */
    public java.lang.String getDisallowSetQueueReasons(int index) {
      return disallowSetQueueReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_set_queue_reasons = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowSetQueueReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowSetQueueReasonsBytes(int index) {
      return disallowSetQueueReasons_.getByteString(index);
    }

    public static final int DISALLOW_INTERRUPTING_PLAYBACK_REASONS_FIELD_NUMBER = 12;
    private com.google.protobuf.LazyStringList disallowInterruptingPlaybackReasons_;
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @return A list containing the disallowInterruptingPlaybackReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowInterruptingPlaybackReasonsList() {
      return disallowInterruptingPlaybackReasons_;
    }
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @return The count of disallowInterruptingPlaybackReasons.
     */
    public int getDisallowInterruptingPlaybackReasonsCount() {
      return disallowInterruptingPlaybackReasons_.size();
    }
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @param index The index of the element to return.
     * @return The disallowInterruptingPlaybackReasons at the given index.
     */
    public java.lang.String getDisallowInterruptingPlaybackReasons(int index) {
      return disallowInterruptingPlaybackReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInterruptingPlaybackReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowInterruptingPlaybackReasonsBytes(int index) {
      return disallowInterruptingPlaybackReasons_.getByteString(index);
    }

    public static final int DISALLOW_TRANSFERRING_PLAYBACK_REASONS_FIELD_NUMBER = 13;
    private com.google.protobuf.LazyStringList disallowTransferringPlaybackReasons_;
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @return A list containing the disallowTransferringPlaybackReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowTransferringPlaybackReasonsList() {
      return disallowTransferringPlaybackReasons_;
    }
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @return The count of disallowTransferringPlaybackReasons.
     */
    public int getDisallowTransferringPlaybackReasonsCount() {
      return disallowTransferringPlaybackReasons_.size();
    }
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @param index The index of the element to return.
     * @return The disallowTransferringPlaybackReasons at the given index.
     */
    public java.lang.String getDisallowTransferringPlaybackReasons(int index) {
      return disallowTransferringPlaybackReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowTransferringPlaybackReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowTransferringPlaybackReasonsBytes(int index) {
      return disallowTransferringPlaybackReasons_.getByteString(index);
    }

    public static final int DISALLOW_REMOTE_CONTROL_REASONS_FIELD_NUMBER = 14;
    private com.google.protobuf.LazyStringList disallowRemoteControlReasons_;
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @return A list containing the disallowRemoteControlReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowRemoteControlReasonsList() {
      return disallowRemoteControlReasons_;
    }
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @return The count of disallowRemoteControlReasons.
     */
    public int getDisallowRemoteControlReasonsCount() {
      return disallowRemoteControlReasons_.size();
    }
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @param index The index of the element to return.
     * @return The disallowRemoteControlReasons at the given index.
     */
    public java.lang.String getDisallowRemoteControlReasons(int index) {
      return disallowRemoteControlReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_remote_control_reasons = 14;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemoteControlReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowRemoteControlReasonsBytes(int index) {
      return disallowRemoteControlReasons_.getByteString(index);
    }

    public static final int DISALLOW_INSERTING_INTO_NEXT_TRACKS_REASONS_FIELD_NUMBER = 15;
    private com.google.protobuf.LazyStringList disallowInsertingIntoNextTracksReasons_;
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @return A list containing the disallowInsertingIntoNextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowInsertingIntoNextTracksReasonsList() {
      return disallowInsertingIntoNextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @return The count of disallowInsertingIntoNextTracksReasons.
     */
    public int getDisallowInsertingIntoNextTracksReasonsCount() {
      return disallowInsertingIntoNextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @param index The index of the element to return.
     * @return The disallowInsertingIntoNextTracksReasons at the given index.
     */
    public java.lang.String getDisallowInsertingIntoNextTracksReasons(int index) {
      return disallowInsertingIntoNextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInsertingIntoNextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowInsertingIntoNextTracksReasonsBytes(int index) {
      return disallowInsertingIntoNextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_INSERTING_INTO_CONTEXT_TRACKS_REASONS_FIELD_NUMBER = 16;
    private com.google.protobuf.LazyStringList disallowInsertingIntoContextTracksReasons_;
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @return A list containing the disallowInsertingIntoContextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowInsertingIntoContextTracksReasonsList() {
      return disallowInsertingIntoContextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @return The count of disallowInsertingIntoContextTracksReasons.
     */
    public int getDisallowInsertingIntoContextTracksReasonsCount() {
      return disallowInsertingIntoContextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @param index The index of the element to return.
     * @return The disallowInsertingIntoContextTracksReasons at the given index.
     */
    public java.lang.String getDisallowInsertingIntoContextTracksReasons(int index) {
      return disallowInsertingIntoContextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowInsertingIntoContextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowInsertingIntoContextTracksReasonsBytes(int index) {
      return disallowInsertingIntoContextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_REORDERING_IN_NEXT_TRACKS_REASONS_FIELD_NUMBER = 17;
    private com.google.protobuf.LazyStringList disallowReorderingInNextTracksReasons_;
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @return A list containing the disallowReorderingInNextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowReorderingInNextTracksReasonsList() {
      return disallowReorderingInNextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @return The count of disallowReorderingInNextTracksReasons.
     */
    public int getDisallowReorderingInNextTracksReasonsCount() {
      return disallowReorderingInNextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @param index The index of the element to return.
     * @return The disallowReorderingInNextTracksReasons at the given index.
     */
    public java.lang.String getDisallowReorderingInNextTracksReasons(int index) {
      return disallowReorderingInNextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReorderingInNextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowReorderingInNextTracksReasonsBytes(int index) {
      return disallowReorderingInNextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_REORDERING_IN_CONTEXT_TRACKS_REASONS_FIELD_NUMBER = 18;
    private com.google.protobuf.LazyStringList disallowReorderingInContextTracksReasons_;
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @return A list containing the disallowReorderingInContextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowReorderingInContextTracksReasonsList() {
      return disallowReorderingInContextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @return The count of disallowReorderingInContextTracksReasons.
     */
    public int getDisallowReorderingInContextTracksReasonsCount() {
      return disallowReorderingInContextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @param index The index of the element to return.
     * @return The disallowReorderingInContextTracksReasons at the given index.
     */
    public java.lang.String getDisallowReorderingInContextTracksReasons(int index) {
      return disallowReorderingInContextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowReorderingInContextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowReorderingInContextTracksReasonsBytes(int index) {
      return disallowReorderingInContextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_REMOVING_FROM_NEXT_TRACKS_REASONS_FIELD_NUMBER = 19;
    private com.google.protobuf.LazyStringList disallowRemovingFromNextTracksReasons_;
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @return A list containing the disallowRemovingFromNextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowRemovingFromNextTracksReasonsList() {
      return disallowRemovingFromNextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @return The count of disallowRemovingFromNextTracksReasons.
     */
    public int getDisallowRemovingFromNextTracksReasonsCount() {
      return disallowRemovingFromNextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @param index The index of the element to return.
     * @return The disallowRemovingFromNextTracksReasons at the given index.
     */
    public java.lang.String getDisallowRemovingFromNextTracksReasons(int index) {
      return disallowRemovingFromNextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemovingFromNextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowRemovingFromNextTracksReasonsBytes(int index) {
      return disallowRemovingFromNextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_REMOVING_FROM_CONTEXT_TRACKS_REASONS_FIELD_NUMBER = 20;
    private com.google.protobuf.LazyStringList disallowRemovingFromContextTracksReasons_;
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @return A list containing the disallowRemovingFromContextTracksReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowRemovingFromContextTracksReasonsList() {
      return disallowRemovingFromContextTracksReasons_;
    }
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @return The count of disallowRemovingFromContextTracksReasons.
     */
    public int getDisallowRemovingFromContextTracksReasonsCount() {
      return disallowRemovingFromContextTracksReasons_.size();
    }
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @param index The index of the element to return.
     * @return The disallowRemovingFromContextTracksReasons at the given index.
     */
    public java.lang.String getDisallowRemovingFromContextTracksReasons(int index) {
      return disallowRemovingFromContextTracksReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowRemovingFromContextTracksReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowRemovingFromContextTracksReasonsBytes(int index) {
      return disallowRemovingFromContextTracksReasons_.getByteString(index);
    }

    public static final int DISALLOW_UPDATING_CONTEXT_REASONS_FIELD_NUMBER = 21;
    private com.google.protobuf.LazyStringList disallowUpdatingContextReasons_;
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @return A list containing the disallowUpdatingContextReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowUpdatingContextReasonsList() {
      return disallowUpdatingContextReasons_;
    }
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @return The count of disallowUpdatingContextReasons.
     */
    public int getDisallowUpdatingContextReasonsCount() {
      return disallowUpdatingContextReasons_.size();
    }
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @param index The index of the element to return.
     * @return The disallowUpdatingContextReasons at the given index.
     */
    public java.lang.String getDisallowUpdatingContextReasons(int index) {
      return disallowUpdatingContextReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_updating_context_reasons = 21;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowUpdatingContextReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowUpdatingContextReasonsBytes(int index) {
      return disallowUpdatingContextReasons_.getByteString(index);
    }

    public static final int DISALLOW_PLAYING_REASONS_FIELD_NUMBER = 22;
    private com.google.protobuf.LazyStringList disallowPlayingReasons_;
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @return A list containing the disallowPlayingReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowPlayingReasonsList() {
      return disallowPlayingReasons_;
    }
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @return The count of disallowPlayingReasons.
     */
    public int getDisallowPlayingReasonsCount() {
      return disallowPlayingReasons_.size();
    }
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @param index The index of the element to return.
     * @return The disallowPlayingReasons at the given index.
     */
    public java.lang.String getDisallowPlayingReasons(int index) {
      return disallowPlayingReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_playing_reasons = 22;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowPlayingReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowPlayingReasonsBytes(int index) {
      return disallowPlayingReasons_.getByteString(index);
    }

    public static final int DISALLOW_STOPPING_REASONS_FIELD_NUMBER = 23;
    private com.google.protobuf.LazyStringList disallowStoppingReasons_;
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @return A list containing the disallowStoppingReasons.
     */
    public com.google.protobuf.ProtocolStringList
        getDisallowStoppingReasonsList() {
      return disallowStoppingReasons_;
    }
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @return The count of disallowStoppingReasons.
     */
    public int getDisallowStoppingReasonsCount() {
      return disallowStoppingReasons_.size();
    }
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @param index The index of the element to return.
     * @return The disallowStoppingReasons at the given index.
     */
    public java.lang.String getDisallowStoppingReasons(int index) {
      return disallowStoppingReasons_.get(index);
    }
    /**
     * <code>repeated string disallow_stopping_reasons = 23;</code>
     * @param index The index of the value to return.
     * @return The bytes of the disallowStoppingReasons at the given index.
     */
    public com.google.protobuf.ByteString
        getDisallowStoppingReasonsBytes(int index) {
      return disallowStoppingReasons_.getByteString(index);
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.Restrictions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.Restrictions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.Restrictions)
        com.spotify.connectstate.Player.RestrictionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Restrictions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Restrictions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.Restrictions.class, com.spotify.connectstate.Player.Restrictions.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.Restrictions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        disallowPausingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        disallowResumingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        disallowSeekingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        disallowPeekingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        disallowPeekingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        disallowSkippingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        disallowSkippingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        disallowTogglingRepeatContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        disallowTogglingRepeatTrackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        disallowTogglingShuffleReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        disallowSetQueueReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        disallowInterruptingPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000800);
        disallowTransferringPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        disallowRemoteControlReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        disallowInsertingIntoNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00004000);
        disallowInsertingIntoContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00008000);
        disallowReorderingInNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        disallowReorderingInContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        disallowRemovingFromNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00040000);
        disallowRemovingFromContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00080000);
        disallowUpdatingContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00100000);
        disallowPlayingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00200000);
        disallowStoppingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00400000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Restrictions_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Restrictions getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.Restrictions.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Restrictions build() {
        com.spotify.connectstate.Player.Restrictions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Restrictions buildPartial() {
        com.spotify.connectstate.Player.Restrictions result = new com.spotify.connectstate.Player.Restrictions(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          disallowPausingReasons_ = disallowPausingReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.disallowPausingReasons_ = disallowPausingReasons_;
        if (((bitField0_ & 0x00000002) != 0)) {
          disallowResumingReasons_ = disallowResumingReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.disallowResumingReasons_ = disallowResumingReasons_;
        if (((bitField0_ & 0x00000004) != 0)) {
          disallowSeekingReasons_ = disallowSeekingReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.disallowSeekingReasons_ = disallowSeekingReasons_;
        if (((bitField0_ & 0x00000008) != 0)) {
          disallowPeekingPrevReasons_ = disallowPeekingPrevReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.disallowPeekingPrevReasons_ = disallowPeekingPrevReasons_;
        if (((bitField0_ & 0x00000010) != 0)) {
          disallowPeekingNextReasons_ = disallowPeekingNextReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.disallowPeekingNextReasons_ = disallowPeekingNextReasons_;
        if (((bitField0_ & 0x00000020) != 0)) {
          disallowSkippingPrevReasons_ = disallowSkippingPrevReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.disallowSkippingPrevReasons_ = disallowSkippingPrevReasons_;
        if (((bitField0_ & 0x00000040) != 0)) {
          disallowSkippingNextReasons_ = disallowSkippingNextReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.disallowSkippingNextReasons_ = disallowSkippingNextReasons_;
        if (((bitField0_ & 0x00000080) != 0)) {
          disallowTogglingRepeatContextReasons_ = disallowTogglingRepeatContextReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.disallowTogglingRepeatContextReasons_ = disallowTogglingRepeatContextReasons_;
        if (((bitField0_ & 0x00000100) != 0)) {
          disallowTogglingRepeatTrackReasons_ = disallowTogglingRepeatTrackReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.disallowTogglingRepeatTrackReasons_ = disallowTogglingRepeatTrackReasons_;
        if (((bitField0_ & 0x00000200) != 0)) {
          disallowTogglingShuffleReasons_ = disallowTogglingShuffleReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.disallowTogglingShuffleReasons_ = disallowTogglingShuffleReasons_;
        if (((bitField0_ & 0x00000400) != 0)) {
          disallowSetQueueReasons_ = disallowSetQueueReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.disallowSetQueueReasons_ = disallowSetQueueReasons_;
        if (((bitField0_ & 0x00000800) != 0)) {
          disallowInterruptingPlaybackReasons_ = disallowInterruptingPlaybackReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000800);
        }
        result.disallowInterruptingPlaybackReasons_ = disallowInterruptingPlaybackReasons_;
        if (((bitField0_ & 0x00001000) != 0)) {
          disallowTransferringPlaybackReasons_ = disallowTransferringPlaybackReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00001000);
        }
        result.disallowTransferringPlaybackReasons_ = disallowTransferringPlaybackReasons_;
        if (((bitField0_ & 0x00002000) != 0)) {
          disallowRemoteControlReasons_ = disallowRemoteControlReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.disallowRemoteControlReasons_ = disallowRemoteControlReasons_;
        if (((bitField0_ & 0x00004000) != 0)) {
          disallowInsertingIntoNextTracksReasons_ = disallowInsertingIntoNextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.disallowInsertingIntoNextTracksReasons_ = disallowInsertingIntoNextTracksReasons_;
        if (((bitField0_ & 0x00008000) != 0)) {
          disallowInsertingIntoContextTracksReasons_ = disallowInsertingIntoContextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00008000);
        }
        result.disallowInsertingIntoContextTracksReasons_ = disallowInsertingIntoContextTracksReasons_;
        if (((bitField0_ & 0x00010000) != 0)) {
          disallowReorderingInNextTracksReasons_ = disallowReorderingInNextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.disallowReorderingInNextTracksReasons_ = disallowReorderingInNextTracksReasons_;
        if (((bitField0_ & 0x00020000) != 0)) {
          disallowReorderingInContextTracksReasons_ = disallowReorderingInContextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00020000);
        }
        result.disallowReorderingInContextTracksReasons_ = disallowReorderingInContextTracksReasons_;
        if (((bitField0_ & 0x00040000) != 0)) {
          disallowRemovingFromNextTracksReasons_ = disallowRemovingFromNextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00040000);
        }
        result.disallowRemovingFromNextTracksReasons_ = disallowRemovingFromNextTracksReasons_;
        if (((bitField0_ & 0x00080000) != 0)) {
          disallowRemovingFromContextTracksReasons_ = disallowRemovingFromContextTracksReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00080000);
        }
        result.disallowRemovingFromContextTracksReasons_ = disallowRemovingFromContextTracksReasons_;
        if (((bitField0_ & 0x00100000) != 0)) {
          disallowUpdatingContextReasons_ = disallowUpdatingContextReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00100000);
        }
        result.disallowUpdatingContextReasons_ = disallowUpdatingContextReasons_;
        if (((bitField0_ & 0x00200000) != 0)) {
          disallowPlayingReasons_ = disallowPlayingReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00200000);
        }
        result.disallowPlayingReasons_ = disallowPlayingReasons_;
        if (((bitField0_ & 0x00400000) != 0)) {
          disallowStoppingReasons_ = disallowStoppingReasons_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00400000);
        }
        result.disallowStoppingReasons_ = disallowStoppingReasons_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList disallowPausingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowPausingReasonsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          disallowPausingReasons_ = new com.google.protobuf.LazyStringArrayList(disallowPausingReasons_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @return A list containing the disallowPausingReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowPausingReasonsList() {
        return disallowPausingReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @return The count of disallowPausingReasons.
       */
      public int getDisallowPausingReasonsCount() {
        return disallowPausingReasons_.size();
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param index The index of the element to return.
       * @return The disallowPausingReasons at the given index.
       */
      public java.lang.String getDisallowPausingReasons(int index) {
        return disallowPausingReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowPausingReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowPausingReasonsBytes(int index) {
        return disallowPausingReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param index The index to set the value at.
       * @param value The disallowPausingReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowPausingReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPausingReasonsIsMutable();
        disallowPausingReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param value The disallowPausingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPausingReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPausingReasonsIsMutable();
        disallowPausingReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param values The disallowPausingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowPausingReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowPausingReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowPausingReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowPausingReasons() {
        disallowPausingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_pausing_reasons = 1;</code>
       * @param value The bytes of the disallowPausingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPausingReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowPausingReasonsIsMutable();
        disallowPausingReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowResumingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowResumingReasonsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          disallowResumingReasons_ = new com.google.protobuf.LazyStringArrayList(disallowResumingReasons_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @return A list containing the disallowResumingReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowResumingReasonsList() {
        return disallowResumingReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @return The count of disallowResumingReasons.
       */
      public int getDisallowResumingReasonsCount() {
        return disallowResumingReasons_.size();
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param index The index of the element to return.
       * @return The disallowResumingReasons at the given index.
       */
      public java.lang.String getDisallowResumingReasons(int index) {
        return disallowResumingReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowResumingReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowResumingReasonsBytes(int index) {
        return disallowResumingReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param index The index to set the value at.
       * @param value The disallowResumingReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowResumingReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowResumingReasonsIsMutable();
        disallowResumingReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param value The disallowResumingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowResumingReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowResumingReasonsIsMutable();
        disallowResumingReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param values The disallowResumingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowResumingReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowResumingReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowResumingReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowResumingReasons() {
        disallowResumingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_resuming_reasons = 2;</code>
       * @param value The bytes of the disallowResumingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowResumingReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowResumingReasonsIsMutable();
        disallowResumingReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowSeekingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowSeekingReasonsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          disallowSeekingReasons_ = new com.google.protobuf.LazyStringArrayList(disallowSeekingReasons_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @return A list containing the disallowSeekingReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowSeekingReasonsList() {
        return disallowSeekingReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @return The count of disallowSeekingReasons.
       */
      public int getDisallowSeekingReasonsCount() {
        return disallowSeekingReasons_.size();
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param index The index of the element to return.
       * @return The disallowSeekingReasons at the given index.
       */
      public java.lang.String getDisallowSeekingReasons(int index) {
        return disallowSeekingReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowSeekingReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowSeekingReasonsBytes(int index) {
        return disallowSeekingReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param index The index to set the value at.
       * @param value The disallowSeekingReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowSeekingReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSeekingReasonsIsMutable();
        disallowSeekingReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param value The disallowSeekingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSeekingReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSeekingReasonsIsMutable();
        disallowSeekingReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param values The disallowSeekingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowSeekingReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowSeekingReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowSeekingReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowSeekingReasons() {
        disallowSeekingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_seeking_reasons = 3;</code>
       * @param value The bytes of the disallowSeekingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSeekingReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowSeekingReasonsIsMutable();
        disallowSeekingReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowPeekingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowPeekingPrevReasonsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          disallowPeekingPrevReasons_ = new com.google.protobuf.LazyStringArrayList(disallowPeekingPrevReasons_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @return A list containing the disallowPeekingPrevReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowPeekingPrevReasonsList() {
        return disallowPeekingPrevReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @return The count of disallowPeekingPrevReasons.
       */
      public int getDisallowPeekingPrevReasonsCount() {
        return disallowPeekingPrevReasons_.size();
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param index The index of the element to return.
       * @return The disallowPeekingPrevReasons at the given index.
       */
      public java.lang.String getDisallowPeekingPrevReasons(int index) {
        return disallowPeekingPrevReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowPeekingPrevReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowPeekingPrevReasonsBytes(int index) {
        return disallowPeekingPrevReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param index The index to set the value at.
       * @param value The disallowPeekingPrevReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowPeekingPrevReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPeekingPrevReasonsIsMutable();
        disallowPeekingPrevReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param value The disallowPeekingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPeekingPrevReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPeekingPrevReasonsIsMutable();
        disallowPeekingPrevReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param values The disallowPeekingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowPeekingPrevReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowPeekingPrevReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowPeekingPrevReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowPeekingPrevReasons() {
        disallowPeekingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_prev_reasons = 4;</code>
       * @param value The bytes of the disallowPeekingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPeekingPrevReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowPeekingPrevReasonsIsMutable();
        disallowPeekingPrevReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowPeekingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowPeekingNextReasonsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          disallowPeekingNextReasons_ = new com.google.protobuf.LazyStringArrayList(disallowPeekingNextReasons_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @return A list containing the disallowPeekingNextReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowPeekingNextReasonsList() {
        return disallowPeekingNextReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @return The count of disallowPeekingNextReasons.
       */
      public int getDisallowPeekingNextReasonsCount() {
        return disallowPeekingNextReasons_.size();
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param index The index of the element to return.
       * @return The disallowPeekingNextReasons at the given index.
       */
      public java.lang.String getDisallowPeekingNextReasons(int index) {
        return disallowPeekingNextReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowPeekingNextReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowPeekingNextReasonsBytes(int index) {
        return disallowPeekingNextReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param index The index to set the value at.
       * @param value The disallowPeekingNextReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowPeekingNextReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPeekingNextReasonsIsMutable();
        disallowPeekingNextReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param value The disallowPeekingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPeekingNextReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPeekingNextReasonsIsMutable();
        disallowPeekingNextReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param values The disallowPeekingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowPeekingNextReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowPeekingNextReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowPeekingNextReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowPeekingNextReasons() {
        disallowPeekingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_peeking_next_reasons = 5;</code>
       * @param value The bytes of the disallowPeekingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPeekingNextReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowPeekingNextReasonsIsMutable();
        disallowPeekingNextReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowSkippingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowSkippingPrevReasonsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          disallowSkippingPrevReasons_ = new com.google.protobuf.LazyStringArrayList(disallowSkippingPrevReasons_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @return A list containing the disallowSkippingPrevReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowSkippingPrevReasonsList() {
        return disallowSkippingPrevReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @return The count of disallowSkippingPrevReasons.
       */
      public int getDisallowSkippingPrevReasonsCount() {
        return disallowSkippingPrevReasons_.size();
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param index The index of the element to return.
       * @return The disallowSkippingPrevReasons at the given index.
       */
      public java.lang.String getDisallowSkippingPrevReasons(int index) {
        return disallowSkippingPrevReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowSkippingPrevReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowSkippingPrevReasonsBytes(int index) {
        return disallowSkippingPrevReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param index The index to set the value at.
       * @param value The disallowSkippingPrevReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowSkippingPrevReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSkippingPrevReasonsIsMutable();
        disallowSkippingPrevReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param value The disallowSkippingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSkippingPrevReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSkippingPrevReasonsIsMutable();
        disallowSkippingPrevReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param values The disallowSkippingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowSkippingPrevReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowSkippingPrevReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowSkippingPrevReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowSkippingPrevReasons() {
        disallowSkippingPrevReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_prev_reasons = 6;</code>
       * @param value The bytes of the disallowSkippingPrevReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSkippingPrevReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowSkippingPrevReasonsIsMutable();
        disallowSkippingPrevReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowSkippingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowSkippingNextReasonsIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          disallowSkippingNextReasons_ = new com.google.protobuf.LazyStringArrayList(disallowSkippingNextReasons_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @return A list containing the disallowSkippingNextReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowSkippingNextReasonsList() {
        return disallowSkippingNextReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @return The count of disallowSkippingNextReasons.
       */
      public int getDisallowSkippingNextReasonsCount() {
        return disallowSkippingNextReasons_.size();
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param index The index of the element to return.
       * @return The disallowSkippingNextReasons at the given index.
       */
      public java.lang.String getDisallowSkippingNextReasons(int index) {
        return disallowSkippingNextReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowSkippingNextReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowSkippingNextReasonsBytes(int index) {
        return disallowSkippingNextReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param index The index to set the value at.
       * @param value The disallowSkippingNextReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowSkippingNextReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSkippingNextReasonsIsMutable();
        disallowSkippingNextReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param value The disallowSkippingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSkippingNextReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSkippingNextReasonsIsMutable();
        disallowSkippingNextReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param values The disallowSkippingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowSkippingNextReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowSkippingNextReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowSkippingNextReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowSkippingNextReasons() {
        disallowSkippingNextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_skipping_next_reasons = 7;</code>
       * @param value The bytes of the disallowSkippingNextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSkippingNextReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowSkippingNextReasonsIsMutable();
        disallowSkippingNextReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowTogglingRepeatContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowTogglingRepeatContextReasonsIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          disallowTogglingRepeatContextReasons_ = new com.google.protobuf.LazyStringArrayList(disallowTogglingRepeatContextReasons_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @return A list containing the disallowTogglingRepeatContextReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowTogglingRepeatContextReasonsList() {
        return disallowTogglingRepeatContextReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @return The count of disallowTogglingRepeatContextReasons.
       */
      public int getDisallowTogglingRepeatContextReasonsCount() {
        return disallowTogglingRepeatContextReasons_.size();
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param index The index of the element to return.
       * @return The disallowTogglingRepeatContextReasons at the given index.
       */
      public java.lang.String getDisallowTogglingRepeatContextReasons(int index) {
        return disallowTogglingRepeatContextReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowTogglingRepeatContextReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowTogglingRepeatContextReasonsBytes(int index) {
        return disallowTogglingRepeatContextReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param index The index to set the value at.
       * @param value The disallowTogglingRepeatContextReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowTogglingRepeatContextReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingRepeatContextReasonsIsMutable();
        disallowTogglingRepeatContextReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param value The disallowTogglingRepeatContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingRepeatContextReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingRepeatContextReasonsIsMutable();
        disallowTogglingRepeatContextReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param values The disallowTogglingRepeatContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowTogglingRepeatContextReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowTogglingRepeatContextReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowTogglingRepeatContextReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowTogglingRepeatContextReasons() {
        disallowTogglingRepeatContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_context_reasons = 8;</code>
       * @param value The bytes of the disallowTogglingRepeatContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingRepeatContextReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowTogglingRepeatContextReasonsIsMutable();
        disallowTogglingRepeatContextReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowTogglingRepeatTrackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowTogglingRepeatTrackReasonsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          disallowTogglingRepeatTrackReasons_ = new com.google.protobuf.LazyStringArrayList(disallowTogglingRepeatTrackReasons_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @return A list containing the disallowTogglingRepeatTrackReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowTogglingRepeatTrackReasonsList() {
        return disallowTogglingRepeatTrackReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @return The count of disallowTogglingRepeatTrackReasons.
       */
      public int getDisallowTogglingRepeatTrackReasonsCount() {
        return disallowTogglingRepeatTrackReasons_.size();
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param index The index of the element to return.
       * @return The disallowTogglingRepeatTrackReasons at the given index.
       */
      public java.lang.String getDisallowTogglingRepeatTrackReasons(int index) {
        return disallowTogglingRepeatTrackReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowTogglingRepeatTrackReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowTogglingRepeatTrackReasonsBytes(int index) {
        return disallowTogglingRepeatTrackReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param index The index to set the value at.
       * @param value The disallowTogglingRepeatTrackReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowTogglingRepeatTrackReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingRepeatTrackReasonsIsMutable();
        disallowTogglingRepeatTrackReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param value The disallowTogglingRepeatTrackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingRepeatTrackReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingRepeatTrackReasonsIsMutable();
        disallowTogglingRepeatTrackReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param values The disallowTogglingRepeatTrackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowTogglingRepeatTrackReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowTogglingRepeatTrackReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowTogglingRepeatTrackReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowTogglingRepeatTrackReasons() {
        disallowTogglingRepeatTrackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_repeat_track_reasons = 9;</code>
       * @param value The bytes of the disallowTogglingRepeatTrackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingRepeatTrackReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowTogglingRepeatTrackReasonsIsMutable();
        disallowTogglingRepeatTrackReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowTogglingShuffleReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowTogglingShuffleReasonsIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          disallowTogglingShuffleReasons_ = new com.google.protobuf.LazyStringArrayList(disallowTogglingShuffleReasons_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @return A list containing the disallowTogglingShuffleReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowTogglingShuffleReasonsList() {
        return disallowTogglingShuffleReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @return The count of disallowTogglingShuffleReasons.
       */
      public int getDisallowTogglingShuffleReasonsCount() {
        return disallowTogglingShuffleReasons_.size();
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param index The index of the element to return.
       * @return The disallowTogglingShuffleReasons at the given index.
       */
      public java.lang.String getDisallowTogglingShuffleReasons(int index) {
        return disallowTogglingShuffleReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowTogglingShuffleReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowTogglingShuffleReasonsBytes(int index) {
        return disallowTogglingShuffleReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param index The index to set the value at.
       * @param value The disallowTogglingShuffleReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowTogglingShuffleReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingShuffleReasonsIsMutable();
        disallowTogglingShuffleReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param value The disallowTogglingShuffleReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingShuffleReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTogglingShuffleReasonsIsMutable();
        disallowTogglingShuffleReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param values The disallowTogglingShuffleReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowTogglingShuffleReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowTogglingShuffleReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowTogglingShuffleReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowTogglingShuffleReasons() {
        disallowTogglingShuffleReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_toggling_shuffle_reasons = 10;</code>
       * @param value The bytes of the disallowTogglingShuffleReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTogglingShuffleReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowTogglingShuffleReasonsIsMutable();
        disallowTogglingShuffleReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowSetQueueReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowSetQueueReasonsIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          disallowSetQueueReasons_ = new com.google.protobuf.LazyStringArrayList(disallowSetQueueReasons_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @return A list containing the disallowSetQueueReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowSetQueueReasonsList() {
        return disallowSetQueueReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @return The count of disallowSetQueueReasons.
       */
      public int getDisallowSetQueueReasonsCount() {
        return disallowSetQueueReasons_.size();
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param index The index of the element to return.
       * @return The disallowSetQueueReasons at the given index.
       */
      public java.lang.String getDisallowSetQueueReasons(int index) {
        return disallowSetQueueReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowSetQueueReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowSetQueueReasonsBytes(int index) {
        return disallowSetQueueReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param index The index to set the value at.
       * @param value The disallowSetQueueReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowSetQueueReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSetQueueReasonsIsMutable();
        disallowSetQueueReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param value The disallowSetQueueReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSetQueueReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowSetQueueReasonsIsMutable();
        disallowSetQueueReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param values The disallowSetQueueReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowSetQueueReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowSetQueueReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowSetQueueReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowSetQueueReasons() {
        disallowSetQueueReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_set_queue_reasons = 11;</code>
       * @param value The bytes of the disallowSetQueueReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowSetQueueReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowSetQueueReasonsIsMutable();
        disallowSetQueueReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowInterruptingPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowInterruptingPlaybackReasonsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          disallowInterruptingPlaybackReasons_ = new com.google.protobuf.LazyStringArrayList(disallowInterruptingPlaybackReasons_);
          bitField0_ |= 0x00000800;
         }
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @return A list containing the disallowInterruptingPlaybackReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowInterruptingPlaybackReasonsList() {
        return disallowInterruptingPlaybackReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @return The count of disallowInterruptingPlaybackReasons.
       */
      public int getDisallowInterruptingPlaybackReasonsCount() {
        return disallowInterruptingPlaybackReasons_.size();
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param index The index of the element to return.
       * @return The disallowInterruptingPlaybackReasons at the given index.
       */
      public java.lang.String getDisallowInterruptingPlaybackReasons(int index) {
        return disallowInterruptingPlaybackReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowInterruptingPlaybackReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowInterruptingPlaybackReasonsBytes(int index) {
        return disallowInterruptingPlaybackReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param index The index to set the value at.
       * @param value The disallowInterruptingPlaybackReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowInterruptingPlaybackReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInterruptingPlaybackReasonsIsMutable();
        disallowInterruptingPlaybackReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param value The disallowInterruptingPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInterruptingPlaybackReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInterruptingPlaybackReasonsIsMutable();
        disallowInterruptingPlaybackReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param values The disallowInterruptingPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowInterruptingPlaybackReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowInterruptingPlaybackReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowInterruptingPlaybackReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowInterruptingPlaybackReasons() {
        disallowInterruptingPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_interrupting_playback_reasons = 12;</code>
       * @param value The bytes of the disallowInterruptingPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInterruptingPlaybackReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowInterruptingPlaybackReasonsIsMutable();
        disallowInterruptingPlaybackReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowTransferringPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowTransferringPlaybackReasonsIsMutable() {
        if (!((bitField0_ & 0x00001000) != 0)) {
          disallowTransferringPlaybackReasons_ = new com.google.protobuf.LazyStringArrayList(disallowTransferringPlaybackReasons_);
          bitField0_ |= 0x00001000;
         }
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @return A list containing the disallowTransferringPlaybackReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowTransferringPlaybackReasonsList() {
        return disallowTransferringPlaybackReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @return The count of disallowTransferringPlaybackReasons.
       */
      public int getDisallowTransferringPlaybackReasonsCount() {
        return disallowTransferringPlaybackReasons_.size();
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param index The index of the element to return.
       * @return The disallowTransferringPlaybackReasons at the given index.
       */
      public java.lang.String getDisallowTransferringPlaybackReasons(int index) {
        return disallowTransferringPlaybackReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowTransferringPlaybackReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowTransferringPlaybackReasonsBytes(int index) {
        return disallowTransferringPlaybackReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param index The index to set the value at.
       * @param value The disallowTransferringPlaybackReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowTransferringPlaybackReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTransferringPlaybackReasonsIsMutable();
        disallowTransferringPlaybackReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param value The disallowTransferringPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTransferringPlaybackReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowTransferringPlaybackReasonsIsMutable();
        disallowTransferringPlaybackReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param values The disallowTransferringPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowTransferringPlaybackReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowTransferringPlaybackReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowTransferringPlaybackReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowTransferringPlaybackReasons() {
        disallowTransferringPlaybackReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_transferring_playback_reasons = 13;</code>
       * @param value The bytes of the disallowTransferringPlaybackReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowTransferringPlaybackReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowTransferringPlaybackReasonsIsMutable();
        disallowTransferringPlaybackReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowRemoteControlReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowRemoteControlReasonsIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          disallowRemoteControlReasons_ = new com.google.protobuf.LazyStringArrayList(disallowRemoteControlReasons_);
          bitField0_ |= 0x00002000;
         }
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @return A list containing the disallowRemoteControlReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowRemoteControlReasonsList() {
        return disallowRemoteControlReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @return The count of disallowRemoteControlReasons.
       */
      public int getDisallowRemoteControlReasonsCount() {
        return disallowRemoteControlReasons_.size();
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param index The index of the element to return.
       * @return The disallowRemoteControlReasons at the given index.
       */
      public java.lang.String getDisallowRemoteControlReasons(int index) {
        return disallowRemoteControlReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowRemoteControlReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowRemoteControlReasonsBytes(int index) {
        return disallowRemoteControlReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param index The index to set the value at.
       * @param value The disallowRemoteControlReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowRemoteControlReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemoteControlReasonsIsMutable();
        disallowRemoteControlReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param value The disallowRemoteControlReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemoteControlReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemoteControlReasonsIsMutable();
        disallowRemoteControlReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param values The disallowRemoteControlReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowRemoteControlReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowRemoteControlReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowRemoteControlReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowRemoteControlReasons() {
        disallowRemoteControlReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_remote_control_reasons = 14;</code>
       * @param value The bytes of the disallowRemoteControlReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemoteControlReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowRemoteControlReasonsIsMutable();
        disallowRemoteControlReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowInsertingIntoNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowInsertingIntoNextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          disallowInsertingIntoNextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowInsertingIntoNextTracksReasons_);
          bitField0_ |= 0x00004000;
         }
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @return A list containing the disallowInsertingIntoNextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowInsertingIntoNextTracksReasonsList() {
        return disallowInsertingIntoNextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @return The count of disallowInsertingIntoNextTracksReasons.
       */
      public int getDisallowInsertingIntoNextTracksReasonsCount() {
        return disallowInsertingIntoNextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param index The index of the element to return.
       * @return The disallowInsertingIntoNextTracksReasons at the given index.
       */
      public java.lang.String getDisallowInsertingIntoNextTracksReasons(int index) {
        return disallowInsertingIntoNextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowInsertingIntoNextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowInsertingIntoNextTracksReasonsBytes(int index) {
        return disallowInsertingIntoNextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param index The index to set the value at.
       * @param value The disallowInsertingIntoNextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowInsertingIntoNextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInsertingIntoNextTracksReasonsIsMutable();
        disallowInsertingIntoNextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param value The disallowInsertingIntoNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInsertingIntoNextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInsertingIntoNextTracksReasonsIsMutable();
        disallowInsertingIntoNextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param values The disallowInsertingIntoNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowInsertingIntoNextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowInsertingIntoNextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowInsertingIntoNextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowInsertingIntoNextTracksReasons() {
        disallowInsertingIntoNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_next_tracks_reasons = 15;</code>
       * @param value The bytes of the disallowInsertingIntoNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInsertingIntoNextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowInsertingIntoNextTracksReasonsIsMutable();
        disallowInsertingIntoNextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowInsertingIntoContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowInsertingIntoContextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          disallowInsertingIntoContextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowInsertingIntoContextTracksReasons_);
          bitField0_ |= 0x00008000;
         }
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @return A list containing the disallowInsertingIntoContextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowInsertingIntoContextTracksReasonsList() {
        return disallowInsertingIntoContextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @return The count of disallowInsertingIntoContextTracksReasons.
       */
      public int getDisallowInsertingIntoContextTracksReasonsCount() {
        return disallowInsertingIntoContextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param index The index of the element to return.
       * @return The disallowInsertingIntoContextTracksReasons at the given index.
       */
      public java.lang.String getDisallowInsertingIntoContextTracksReasons(int index) {
        return disallowInsertingIntoContextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowInsertingIntoContextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowInsertingIntoContextTracksReasonsBytes(int index) {
        return disallowInsertingIntoContextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param index The index to set the value at.
       * @param value The disallowInsertingIntoContextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowInsertingIntoContextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInsertingIntoContextTracksReasonsIsMutable();
        disallowInsertingIntoContextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param value The disallowInsertingIntoContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInsertingIntoContextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowInsertingIntoContextTracksReasonsIsMutable();
        disallowInsertingIntoContextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param values The disallowInsertingIntoContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowInsertingIntoContextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowInsertingIntoContextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowInsertingIntoContextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowInsertingIntoContextTracksReasons() {
        disallowInsertingIntoContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_inserting_into_context_tracks_reasons = 16;</code>
       * @param value The bytes of the disallowInsertingIntoContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowInsertingIntoContextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowInsertingIntoContextTracksReasonsIsMutable();
        disallowInsertingIntoContextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowReorderingInNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowReorderingInNextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          disallowReorderingInNextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowReorderingInNextTracksReasons_);
          bitField0_ |= 0x00010000;
         }
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @return A list containing the disallowReorderingInNextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowReorderingInNextTracksReasonsList() {
        return disallowReorderingInNextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @return The count of disallowReorderingInNextTracksReasons.
       */
      public int getDisallowReorderingInNextTracksReasonsCount() {
        return disallowReorderingInNextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param index The index of the element to return.
       * @return The disallowReorderingInNextTracksReasons at the given index.
       */
      public java.lang.String getDisallowReorderingInNextTracksReasons(int index) {
        return disallowReorderingInNextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowReorderingInNextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowReorderingInNextTracksReasonsBytes(int index) {
        return disallowReorderingInNextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param index The index to set the value at.
       * @param value The disallowReorderingInNextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowReorderingInNextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReorderingInNextTracksReasonsIsMutable();
        disallowReorderingInNextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param value The disallowReorderingInNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReorderingInNextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReorderingInNextTracksReasonsIsMutable();
        disallowReorderingInNextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param values The disallowReorderingInNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowReorderingInNextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowReorderingInNextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowReorderingInNextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowReorderingInNextTracksReasons() {
        disallowReorderingInNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_next_tracks_reasons = 17;</code>
       * @param value The bytes of the disallowReorderingInNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReorderingInNextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowReorderingInNextTracksReasonsIsMutable();
        disallowReorderingInNextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowReorderingInContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowReorderingInContextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00020000) != 0)) {
          disallowReorderingInContextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowReorderingInContextTracksReasons_);
          bitField0_ |= 0x00020000;
         }
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @return A list containing the disallowReorderingInContextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowReorderingInContextTracksReasonsList() {
        return disallowReorderingInContextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @return The count of disallowReorderingInContextTracksReasons.
       */
      public int getDisallowReorderingInContextTracksReasonsCount() {
        return disallowReorderingInContextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param index The index of the element to return.
       * @return The disallowReorderingInContextTracksReasons at the given index.
       */
      public java.lang.String getDisallowReorderingInContextTracksReasons(int index) {
        return disallowReorderingInContextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowReorderingInContextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowReorderingInContextTracksReasonsBytes(int index) {
        return disallowReorderingInContextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param index The index to set the value at.
       * @param value The disallowReorderingInContextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowReorderingInContextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReorderingInContextTracksReasonsIsMutable();
        disallowReorderingInContextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param value The disallowReorderingInContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReorderingInContextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowReorderingInContextTracksReasonsIsMutable();
        disallowReorderingInContextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param values The disallowReorderingInContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowReorderingInContextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowReorderingInContextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowReorderingInContextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowReorderingInContextTracksReasons() {
        disallowReorderingInContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_reordering_in_context_tracks_reasons = 18;</code>
       * @param value The bytes of the disallowReorderingInContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowReorderingInContextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowReorderingInContextTracksReasonsIsMutable();
        disallowReorderingInContextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowRemovingFromNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowRemovingFromNextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00040000) != 0)) {
          disallowRemovingFromNextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowRemovingFromNextTracksReasons_);
          bitField0_ |= 0x00040000;
         }
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @return A list containing the disallowRemovingFromNextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowRemovingFromNextTracksReasonsList() {
        return disallowRemovingFromNextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @return The count of disallowRemovingFromNextTracksReasons.
       */
      public int getDisallowRemovingFromNextTracksReasonsCount() {
        return disallowRemovingFromNextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param index The index of the element to return.
       * @return The disallowRemovingFromNextTracksReasons at the given index.
       */
      public java.lang.String getDisallowRemovingFromNextTracksReasons(int index) {
        return disallowRemovingFromNextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowRemovingFromNextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowRemovingFromNextTracksReasonsBytes(int index) {
        return disallowRemovingFromNextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param index The index to set the value at.
       * @param value The disallowRemovingFromNextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowRemovingFromNextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemovingFromNextTracksReasonsIsMutable();
        disallowRemovingFromNextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param value The disallowRemovingFromNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemovingFromNextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemovingFromNextTracksReasonsIsMutable();
        disallowRemovingFromNextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param values The disallowRemovingFromNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowRemovingFromNextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowRemovingFromNextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowRemovingFromNextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowRemovingFromNextTracksReasons() {
        disallowRemovingFromNextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_next_tracks_reasons = 19;</code>
       * @param value The bytes of the disallowRemovingFromNextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemovingFromNextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowRemovingFromNextTracksReasonsIsMutable();
        disallowRemovingFromNextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowRemovingFromContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowRemovingFromContextTracksReasonsIsMutable() {
        if (!((bitField0_ & 0x00080000) != 0)) {
          disallowRemovingFromContextTracksReasons_ = new com.google.protobuf.LazyStringArrayList(disallowRemovingFromContextTracksReasons_);
          bitField0_ |= 0x00080000;
         }
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @return A list containing the disallowRemovingFromContextTracksReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowRemovingFromContextTracksReasonsList() {
        return disallowRemovingFromContextTracksReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @return The count of disallowRemovingFromContextTracksReasons.
       */
      public int getDisallowRemovingFromContextTracksReasonsCount() {
        return disallowRemovingFromContextTracksReasons_.size();
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param index The index of the element to return.
       * @return The disallowRemovingFromContextTracksReasons at the given index.
       */
      public java.lang.String getDisallowRemovingFromContextTracksReasons(int index) {
        return disallowRemovingFromContextTracksReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowRemovingFromContextTracksReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowRemovingFromContextTracksReasonsBytes(int index) {
        return disallowRemovingFromContextTracksReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param index The index to set the value at.
       * @param value The disallowRemovingFromContextTracksReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowRemovingFromContextTracksReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemovingFromContextTracksReasonsIsMutable();
        disallowRemovingFromContextTracksReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param value The disallowRemovingFromContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemovingFromContextTracksReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowRemovingFromContextTracksReasonsIsMutable();
        disallowRemovingFromContextTracksReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param values The disallowRemovingFromContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowRemovingFromContextTracksReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowRemovingFromContextTracksReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowRemovingFromContextTracksReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowRemovingFromContextTracksReasons() {
        disallowRemovingFromContextTracksReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_removing_from_context_tracks_reasons = 20;</code>
       * @param value The bytes of the disallowRemovingFromContextTracksReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowRemovingFromContextTracksReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowRemovingFromContextTracksReasonsIsMutable();
        disallowRemovingFromContextTracksReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowUpdatingContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowUpdatingContextReasonsIsMutable() {
        if (!((bitField0_ & 0x00100000) != 0)) {
          disallowUpdatingContextReasons_ = new com.google.protobuf.LazyStringArrayList(disallowUpdatingContextReasons_);
          bitField0_ |= 0x00100000;
         }
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @return A list containing the disallowUpdatingContextReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowUpdatingContextReasonsList() {
        return disallowUpdatingContextReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @return The count of disallowUpdatingContextReasons.
       */
      public int getDisallowUpdatingContextReasonsCount() {
        return disallowUpdatingContextReasons_.size();
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param index The index of the element to return.
       * @return The disallowUpdatingContextReasons at the given index.
       */
      public java.lang.String getDisallowUpdatingContextReasons(int index) {
        return disallowUpdatingContextReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowUpdatingContextReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowUpdatingContextReasonsBytes(int index) {
        return disallowUpdatingContextReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param index The index to set the value at.
       * @param value The disallowUpdatingContextReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowUpdatingContextReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowUpdatingContextReasonsIsMutable();
        disallowUpdatingContextReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param value The disallowUpdatingContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowUpdatingContextReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowUpdatingContextReasonsIsMutable();
        disallowUpdatingContextReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param values The disallowUpdatingContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowUpdatingContextReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowUpdatingContextReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowUpdatingContextReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowUpdatingContextReasons() {
        disallowUpdatingContextReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_updating_context_reasons = 21;</code>
       * @param value The bytes of the disallowUpdatingContextReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowUpdatingContextReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowUpdatingContextReasonsIsMutable();
        disallowUpdatingContextReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowPlayingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowPlayingReasonsIsMutable() {
        if (!((bitField0_ & 0x00200000) != 0)) {
          disallowPlayingReasons_ = new com.google.protobuf.LazyStringArrayList(disallowPlayingReasons_);
          bitField0_ |= 0x00200000;
         }
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @return A list containing the disallowPlayingReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowPlayingReasonsList() {
        return disallowPlayingReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @return The count of disallowPlayingReasons.
       */
      public int getDisallowPlayingReasonsCount() {
        return disallowPlayingReasons_.size();
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param index The index of the element to return.
       * @return The disallowPlayingReasons at the given index.
       */
      public java.lang.String getDisallowPlayingReasons(int index) {
        return disallowPlayingReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowPlayingReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowPlayingReasonsBytes(int index) {
        return disallowPlayingReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param index The index to set the value at.
       * @param value The disallowPlayingReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowPlayingReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPlayingReasonsIsMutable();
        disallowPlayingReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param value The disallowPlayingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPlayingReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowPlayingReasonsIsMutable();
        disallowPlayingReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param values The disallowPlayingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowPlayingReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowPlayingReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowPlayingReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowPlayingReasons() {
        disallowPlayingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_playing_reasons = 22;</code>
       * @param value The bytes of the disallowPlayingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowPlayingReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowPlayingReasonsIsMutable();
        disallowPlayingReasons_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList disallowStoppingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDisallowStoppingReasonsIsMutable() {
        if (!((bitField0_ & 0x00400000) != 0)) {
          disallowStoppingReasons_ = new com.google.protobuf.LazyStringArrayList(disallowStoppingReasons_);
          bitField0_ |= 0x00400000;
         }
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @return A list containing the disallowStoppingReasons.
       */
      public com.google.protobuf.ProtocolStringList
          getDisallowStoppingReasonsList() {
        return disallowStoppingReasons_.getUnmodifiableView();
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @return The count of disallowStoppingReasons.
       */
      public int getDisallowStoppingReasonsCount() {
        return disallowStoppingReasons_.size();
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param index The index of the element to return.
       * @return The disallowStoppingReasons at the given index.
       */
      public java.lang.String getDisallowStoppingReasons(int index) {
        return disallowStoppingReasons_.get(index);
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param index The index of the value to return.
       * @return The bytes of the disallowStoppingReasons at the given index.
       */
      public com.google.protobuf.ByteString
          getDisallowStoppingReasonsBytes(int index) {
        return disallowStoppingReasons_.getByteString(index);
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param index The index to set the value at.
       * @param value The disallowStoppingReasons to set.
       * @return This builder for chaining.
       */
      public Builder setDisallowStoppingReasons(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowStoppingReasonsIsMutable();
        disallowStoppingReasons_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param value The disallowStoppingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowStoppingReasons(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDisallowStoppingReasonsIsMutable();
        disallowStoppingReasons_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param values The disallowStoppingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisallowStoppingReasons(
          java.lang.Iterable<java.lang.String> values) {
        ensureDisallowStoppingReasonsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, disallowStoppingReasons_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisallowStoppingReasons() {
        disallowStoppingReasons_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string disallow_stopping_reasons = 23;</code>
       * @param value The bytes of the disallowStoppingReasons to add.
       * @return This builder for chaining.
       */
      public Builder addDisallowStoppingReasonsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDisallowStoppingReasonsIsMutable();
        disallowStoppingReasons_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.Restrictions)
    }

    // @@protoc_insertion_point(class_scope:connectstate.Restrictions)
    private static final com.spotify.connectstate.Player.Restrictions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.Restrictions();
    }

    public static com.spotify.connectstate.Player.Restrictions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Restrictions>
        PARSER = new com.google.protobuf.AbstractParser<Restrictions>() {
      @java.lang.Override
      public Restrictions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.Restrictions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PlayOriginOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.PlayOrigin)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string feature_identifier = 1;</code>
     * @return The featureIdentifier.
     */
    java.lang.String getFeatureIdentifier();
    /**
     * <code>string feature_identifier = 1;</code>
     * @return The bytes for featureIdentifier.
     */
    com.google.protobuf.ByteString
        getFeatureIdentifierBytes();

    /**
     * <code>string feature_version = 2;</code>
     * @return The featureVersion.
     */
    java.lang.String getFeatureVersion();
    /**
     * <code>string feature_version = 2;</code>
     * @return The bytes for featureVersion.
     */
    com.google.protobuf.ByteString
        getFeatureVersionBytes();

    /**
     * <code>string view_uri = 3;</code>
     * @return The viewUri.
     */
    java.lang.String getViewUri();
    /**
     * <code>string view_uri = 3;</code>
     * @return The bytes for viewUri.
     */
    com.google.protobuf.ByteString
        getViewUriBytes();

    /**
     * <code>string external_referrer = 4;</code>
     * @return The externalReferrer.
     */
    java.lang.String getExternalReferrer();
    /**
     * <code>string external_referrer = 4;</code>
     * @return The bytes for externalReferrer.
     */
    com.google.protobuf.ByteString
        getExternalReferrerBytes();

    /**
     * <code>string referrer_identifier = 5;</code>
     * @return The referrerIdentifier.
     */
    java.lang.String getReferrerIdentifier();
    /**
     * <code>string referrer_identifier = 5;</code>
     * @return The bytes for referrerIdentifier.
     */
    com.google.protobuf.ByteString
        getReferrerIdentifierBytes();

    /**
     * <code>string device_identifier = 6;</code>
     * @return The deviceIdentifier.
     */
    java.lang.String getDeviceIdentifier();
    /**
     * <code>string device_identifier = 6;</code>
     * @return The bytes for deviceIdentifier.
     */
    com.google.protobuf.ByteString
        getDeviceIdentifierBytes();

    /**
     * <code>repeated string feature_classes = 7;</code>
     * @return A list containing the featureClasses.
     */
    java.util.List<java.lang.String>
        getFeatureClassesList();
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @return The count of featureClasses.
     */
    int getFeatureClassesCount();
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @param index The index of the element to return.
     * @return The featureClasses at the given index.
     */
    java.lang.String getFeatureClasses(int index);
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the featureClasses at the given index.
     */
    com.google.protobuf.ByteString
        getFeatureClassesBytes(int index);
  }
  /**
   * Protobuf type {@code connectstate.PlayOrigin}
   */
  public  static final class PlayOrigin extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.PlayOrigin)
      PlayOriginOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlayOrigin.newBuilder() to construct.
    private PlayOrigin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlayOrigin() {
      featureIdentifier_ = "";
      featureVersion_ = "";
      viewUri_ = "";
      externalReferrer_ = "";
      referrerIdentifier_ = "";
      deviceIdentifier_ = "";
      featureClasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_PlayOrigin_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_PlayOrigin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.PlayOrigin.class, com.spotify.connectstate.Player.PlayOrigin.Builder.class);
    }

    public static final int FEATURE_IDENTIFIER_FIELD_NUMBER = 1;
    private volatile java.lang.Object featureIdentifier_;
    /**
     * <code>string feature_identifier = 1;</code>
     * @return The featureIdentifier.
     */
    public java.lang.String getFeatureIdentifier() {
      java.lang.Object ref = featureIdentifier_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        featureIdentifier_ = s;
        return s;
      }
    }
    /**
     * <code>string feature_identifier = 1;</code>
     * @return The bytes for featureIdentifier.
     */
    public com.google.protobuf.ByteString
        getFeatureIdentifierBytes() {
      java.lang.Object ref = featureIdentifier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        featureIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FEATURE_VERSION_FIELD_NUMBER = 2;
    private volatile java.lang.Object featureVersion_;
    /**
     * <code>string feature_version = 2;</code>
     * @return The featureVersion.
     */
    public java.lang.String getFeatureVersion() {
      java.lang.Object ref = featureVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        featureVersion_ = s;
        return s;
      }
    }
    /**
     * <code>string feature_version = 2;</code>
     * @return The bytes for featureVersion.
     */
    public com.google.protobuf.ByteString
        getFeatureVersionBytes() {
      java.lang.Object ref = featureVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        featureVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VIEW_URI_FIELD_NUMBER = 3;
    private volatile java.lang.Object viewUri_;
    /**
     * <code>string view_uri = 3;</code>
     * @return The viewUri.
     */
    public java.lang.String getViewUri() {
      java.lang.Object ref = viewUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        viewUri_ = s;
        return s;
      }
    }
    /**
     * <code>string view_uri = 3;</code>
     * @return The bytes for viewUri.
     */
    public com.google.protobuf.ByteString
        getViewUriBytes() {
      java.lang.Object ref = viewUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        viewUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTERNAL_REFERRER_FIELD_NUMBER = 4;
    private volatile java.lang.Object externalReferrer_;
    /**
     * <code>string external_referrer = 4;</code>
     * @return The externalReferrer.
     */
    public java.lang.String getExternalReferrer() {
      java.lang.Object ref = externalReferrer_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        externalReferrer_ = s;
        return s;
      }
    }
    /**
     * <code>string external_referrer = 4;</code>
     * @return The bytes for externalReferrer.
     */
    public com.google.protobuf.ByteString
        getExternalReferrerBytes() {
      java.lang.Object ref = externalReferrer_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        externalReferrer_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REFERRER_IDENTIFIER_FIELD_NUMBER = 5;
    private volatile java.lang.Object referrerIdentifier_;
    /**
     * <code>string referrer_identifier = 5;</code>
     * @return The referrerIdentifier.
     */
    public java.lang.String getReferrerIdentifier() {
      java.lang.Object ref = referrerIdentifier_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        referrerIdentifier_ = s;
        return s;
      }
    }
    /**
     * <code>string referrer_identifier = 5;</code>
     * @return The bytes for referrerIdentifier.
     */
    public com.google.protobuf.ByteString
        getReferrerIdentifierBytes() {
      java.lang.Object ref = referrerIdentifier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        referrerIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_IDENTIFIER_FIELD_NUMBER = 6;
    private volatile java.lang.Object deviceIdentifier_;
    /**
     * <code>string device_identifier = 6;</code>
     * @return The deviceIdentifier.
     */
    public java.lang.String getDeviceIdentifier() {
      java.lang.Object ref = deviceIdentifier_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        deviceIdentifier_ = s;
        return s;
      }
    }
    /**
     * <code>string device_identifier = 6;</code>
     * @return The bytes for deviceIdentifier.
     */
    public com.google.protobuf.ByteString
        getDeviceIdentifierBytes() {
      java.lang.Object ref = deviceIdentifier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FEATURE_CLASSES_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList featureClasses_;
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @return A list containing the featureClasses.
     */
    public com.google.protobuf.ProtocolStringList
        getFeatureClassesList() {
      return featureClasses_;
    }
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @return The count of featureClasses.
     */
    public int getFeatureClassesCount() {
      return featureClasses_.size();
    }
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @param index The index of the element to return.
     * @return The featureClasses at the given index.
     */
    public java.lang.String getFeatureClasses(int index) {
      return featureClasses_.get(index);
    }
    /**
     * <code>repeated string feature_classes = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the featureClasses at the given index.
     */
    public com.google.protobuf.ByteString
        getFeatureClassesBytes(int index) {
      return featureClasses_.getByteString(index);
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.PlayOrigin prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.PlayOrigin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.PlayOrigin)
        com.spotify.connectstate.Player.PlayOriginOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayOrigin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayOrigin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.PlayOrigin.class, com.spotify.connectstate.Player.PlayOrigin.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.PlayOrigin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        featureVersion_ = "";

        viewUri_ = "";

        externalReferrer_ = "";

        referrerIdentifier_ = "";

        deviceIdentifier_ = "";

        featureClasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_PlayOrigin_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayOrigin getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.PlayOrigin.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayOrigin build() {
        com.spotify.connectstate.Player.PlayOrigin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.PlayOrigin buildPartial() {
        com.spotify.connectstate.Player.PlayOrigin result = new com.spotify.connectstate.Player.PlayOrigin(this);
        int from_bitField0_ = bitField0_;
        result.featureIdentifier_ = featureIdentifier_;
        result.featureVersion_ = featureVersion_;
        result.viewUri_ = viewUri_;
        result.externalReferrer_ = externalReferrer_;
        result.referrerIdentifier_ = referrerIdentifier_;
        result.deviceIdentifier_ = deviceIdentifier_;
        if (((bitField0_ & 0x00000001) != 0)) {
          featureClasses_ = featureClasses_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.featureClasses_ = featureClasses_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      private int bitField0_;

      private java.lang.Object featureIdentifier_ = "";
      /**
       * <code>string feature_identifier = 1;</code>
       * @return The featureIdentifier.
       */
      public java.lang.String getFeatureIdentifier() {
        java.lang.Object ref = featureIdentifier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          featureIdentifier_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string feature_identifier = 1;</code>
       * @return The bytes for featureIdentifier.
       */
      public com.google.protobuf.ByteString
          getFeatureIdentifierBytes() {
        java.lang.Object ref = featureIdentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          featureIdentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string feature_identifier = 1;</code>
       * @param value The featureIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureIdentifier(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        featureIdentifier_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string feature_identifier = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFeatureIdentifier() {
        
        featureIdentifier_ = getDefaultInstance().getFeatureIdentifier();
        onChanged();
        return this;
      }
      /**
       * <code>string feature_identifier = 1;</code>
       * @param value The bytes for featureIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureIdentifierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        featureIdentifier_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object featureVersion_ = "";
      /**
       * <code>string feature_version = 2;</code>
       * @return The featureVersion.
       */
      public java.lang.String getFeatureVersion() {
        java.lang.Object ref = featureVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          featureVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string feature_version = 2;</code>
       * @return The bytes for featureVersion.
       */
      public com.google.protobuf.ByteString
          getFeatureVersionBytes() {
        java.lang.Object ref = featureVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          featureVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string feature_version = 2;</code>
       * @param value The featureVersion to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        featureVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string feature_version = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFeatureVersion() {
        
        featureVersion_ = getDefaultInstance().getFeatureVersion();
        onChanged();
        return this;
      }
      /**
       * <code>string feature_version = 2;</code>
       * @param value The bytes for featureVersion to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        featureVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object viewUri_ = "";
      /**
       * <code>string view_uri = 3;</code>
       * @return The viewUri.
       */
      public java.lang.String getViewUri() {
        java.lang.Object ref = viewUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          viewUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string view_uri = 3;</code>
       * @return The bytes for viewUri.
       */
      public com.google.protobuf.ByteString
          getViewUriBytes() {
        java.lang.Object ref = viewUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          viewUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string view_uri = 3;</code>
       * @param value The viewUri to set.
       * @return This builder for chaining.
       */
      public Builder setViewUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        viewUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string view_uri = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearViewUri() {
        
        viewUri_ = getDefaultInstance().getViewUri();
        onChanged();
        return this;
      }
      /**
       * <code>string view_uri = 3;</code>
       * @param value The bytes for viewUri to set.
       * @return This builder for chaining.
       */
      public Builder setViewUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        viewUri_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object externalReferrer_ = "";
      /**
       * <code>string external_referrer = 4;</code>
       * @return The externalReferrer.
       */
      public java.lang.String getExternalReferrer() {
        java.lang.Object ref = externalReferrer_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          externalReferrer_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string external_referrer = 4;</code>
       * @return The bytes for externalReferrer.
       */
      public com.google.protobuf.ByteString
          getExternalReferrerBytes() {
        java.lang.Object ref = externalReferrer_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          externalReferrer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string external_referrer = 4;</code>
       * @param value The externalReferrer to set.
       * @return This builder for chaining.
       */
      public Builder setExternalReferrer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        externalReferrer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string external_referrer = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearExternalReferrer() {
        
        externalReferrer_ = getDefaultInstance().getExternalReferrer();
        onChanged();
        return this;
      }
      /**
       * <code>string external_referrer = 4;</code>
       * @param value The bytes for externalReferrer to set.
       * @return This builder for chaining.
       */
      public Builder setExternalReferrerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        externalReferrer_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object referrerIdentifier_ = "";
      /**
       * <code>string referrer_identifier = 5;</code>
       * @return The referrerIdentifier.
       */
      public java.lang.String getReferrerIdentifier() {
        java.lang.Object ref = referrerIdentifier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          referrerIdentifier_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string referrer_identifier = 5;</code>
       * @return The bytes for referrerIdentifier.
       */
      public com.google.protobuf.ByteString
          getReferrerIdentifierBytes() {
        java.lang.Object ref = referrerIdentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          referrerIdentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string referrer_identifier = 5;</code>
       * @param value The referrerIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setReferrerIdentifier(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        referrerIdentifier_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string referrer_identifier = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReferrerIdentifier() {
        
        referrerIdentifier_ = getDefaultInstance().getReferrerIdentifier();
        onChanged();
        return this;
      }
      /**
       * <code>string referrer_identifier = 5;</code>
       * @param value The bytes for referrerIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setReferrerIdentifierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        referrerIdentifier_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object deviceIdentifier_ = "";
      /**
       * <code>string device_identifier = 6;</code>
       * @return The deviceIdentifier.
       */
      public java.lang.String getDeviceIdentifier() {
        java.lang.Object ref = deviceIdentifier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          deviceIdentifier_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string device_identifier = 6;</code>
       * @return The bytes for deviceIdentifier.
       */
      public com.google.protobuf.ByteString
          getDeviceIdentifierBytes() {
        java.lang.Object ref = deviceIdentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceIdentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string device_identifier = 6;</code>
       * @param value The deviceIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceIdentifier(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        deviceIdentifier_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string device_identifier = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceIdentifier() {
        
        deviceIdentifier_ = getDefaultInstance().getDeviceIdentifier();
        onChanged();
        return this;
      }
      /**
       * <code>string device_identifier = 6;</code>
       * @param value The bytes for deviceIdentifier to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceIdentifierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        deviceIdentifier_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList featureClasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFeatureClassesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          featureClasses_ = new com.google.protobuf.LazyStringArrayList(featureClasses_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @return A list containing the featureClasses.
       */
      public com.google.protobuf.ProtocolStringList
          getFeatureClassesList() {
        return featureClasses_.getUnmodifiableView();
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @return The count of featureClasses.
       */
      public int getFeatureClassesCount() {
        return featureClasses_.size();
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param index The index of the element to return.
       * @return The featureClasses at the given index.
       */
      public java.lang.String getFeatureClasses(int index) {
        return featureClasses_.get(index);
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the featureClasses at the given index.
       */
      public com.google.protobuf.ByteString
          getFeatureClassesBytes(int index) {
        return featureClasses_.getByteString(index);
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param index The index to set the value at.
       * @param value The featureClasses to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureClasses(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFeatureClassesIsMutable();
        featureClasses_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param value The featureClasses to add.
       * @return This builder for chaining.
       */
      public Builder addFeatureClasses(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFeatureClassesIsMutable();
        featureClasses_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param values The featureClasses to add.
       * @return This builder for chaining.
       */
      public Builder addAllFeatureClasses(
          java.lang.Iterable<java.lang.String> values) {
        ensureFeatureClassesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, featureClasses_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearFeatureClasses() {
        featureClasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string feature_classes = 7;</code>
       * @param value The bytes of the featureClasses to add.
       * @return This builder for chaining.
       */
      public Builder addFeatureClassesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureFeatureClassesIsMutable();
        featureClasses_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.PlayOrigin)
    }

    // @@protoc_insertion_point(class_scope:connectstate.PlayOrigin)
    private static final com.spotify.connectstate.Player.PlayOrigin DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.PlayOrigin();
    }

    public static com.spotify.connectstate.Player.PlayOrigin getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PlayOrigin>
        PARSER = new com.google.protobuf.AbstractParser<PlayOrigin>() {
      @java.lang.Override
      public PlayOrigin parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.PlayOrigin getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextPlayerOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.ContextPlayerOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool shuffling_context = 1;</code>
     * @return The shufflingContext.
     */
    boolean getShufflingContext();

    /**
     * <code>bool repeating_context = 2;</code>
     * @return The repeatingContext.
     */
    boolean getRepeatingContext();

    /**
     * <code>bool repeating_track = 3;</code>
     * @return The repeatingTrack.
     */
    boolean getRepeatingTrack();
  }
  /**
   * Protobuf type {@code connectstate.ContextPlayerOptions}
   */
  public  static final class ContextPlayerOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.ContextPlayerOptions)
      ContextPlayerOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextPlayerOptions.newBuilder() to construct.
    private ContextPlayerOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextPlayerOptions() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ContextPlayerOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_ContextPlayerOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.ContextPlayerOptions.class, com.spotify.connectstate.Player.ContextPlayerOptions.Builder.class);
    }

    public static final int SHUFFLING_CONTEXT_FIELD_NUMBER = 1;
    private boolean shufflingContext_;
    /**
     * <code>bool shuffling_context = 1;</code>
     * @return The shufflingContext.
     */
    public boolean getShufflingContext() {
      return shufflingContext_;
    }

    public static final int REPEATING_CONTEXT_FIELD_NUMBER = 2;
    private boolean repeatingContext_;
    /**
     * <code>bool repeating_context = 2;</code>
     * @return The repeatingContext.
     */
    public boolean getRepeatingContext() {
      return repeatingContext_;
    }

    public static final int REPEATING_TRACK_FIELD_NUMBER = 3;
    private boolean repeatingTrack_;
    /**
     * <code>bool repeating_track = 3;</code>
     * @return The repeatingTrack.
     */
    public boolean getRepeatingTrack() {
      return repeatingTrack_;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.ContextPlayerOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.ContextPlayerOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.ContextPlayerOptions)
        com.spotify.connectstate.Player.ContextPlayerOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextPlayerOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextPlayerOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.ContextPlayerOptions.class, com.spotify.connectstate.Player.ContextPlayerOptions.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.ContextPlayerOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        repeatingContext_ = false;

        repeatingTrack_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_ContextPlayerOptions_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextPlayerOptions getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.ContextPlayerOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextPlayerOptions build() {
        com.spotify.connectstate.Player.ContextPlayerOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.ContextPlayerOptions buildPartial() {
        com.spotify.connectstate.Player.ContextPlayerOptions result = new com.spotify.connectstate.Player.ContextPlayerOptions(this);
        result.shufflingContext_ = shufflingContext_;
        result.repeatingContext_ = repeatingContext_;
        result.repeatingTrack_ = repeatingTrack_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      private boolean shufflingContext_ ;
      /**
       * <code>bool shuffling_context = 1;</code>
       * @return The shufflingContext.
       */
      public boolean getShufflingContext() {
        return shufflingContext_;
      }
      /**
       * <code>bool shuffling_context = 1;</code>
       * @param value The shufflingContext to set.
       * @return This builder for chaining.
       */
      public Builder setShufflingContext(boolean value) {
        
        shufflingContext_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool shuffling_context = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearShufflingContext() {
        
        shufflingContext_ = false;
        onChanged();
        return this;
      }

      private boolean repeatingContext_ ;
      /**
       * <code>bool repeating_context = 2;</code>
       * @return The repeatingContext.
       */
      public boolean getRepeatingContext() {
        return repeatingContext_;
      }
      /**
       * <code>bool repeating_context = 2;</code>
       * @param value The repeatingContext to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatingContext(boolean value) {
        
        repeatingContext_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool repeating_context = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatingContext() {
        
        repeatingContext_ = false;
        onChanged();
        return this;
      }

      private boolean repeatingTrack_ ;
      /**
       * <code>bool repeating_track = 3;</code>
       * @return The repeatingTrack.
       */
      public boolean getRepeatingTrack() {
        return repeatingTrack_;
      }
      /**
       * <code>bool repeating_track = 3;</code>
       * @param value The repeatingTrack to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatingTrack(boolean value) {
        
        repeatingTrack_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool repeating_track = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatingTrack() {
        
        repeatingTrack_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.ContextPlayerOptions)
    }

    // @@protoc_insertion_point(class_scope:connectstate.ContextPlayerOptions)
    private static final com.spotify.connectstate.Player.ContextPlayerOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.ContextPlayerOptions();
    }

    public static com.spotify.connectstate.Player.ContextPlayerOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ContextPlayerOptions>
        PARSER = new com.google.protobuf.AbstractParser<ContextPlayerOptions>() {
      @java.lang.Override
      public ContextPlayerOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.ContextPlayerOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SuppressionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:connectstate.Suppressions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string providers = 1;</code>
     * @return A list containing the providers.
     */
    java.util.List<java.lang.String>
        getProvidersList();
    /**
     * <code>repeated string providers = 1;</code>
     * @return The count of providers.
     */
    int getProvidersCount();
    /**
     * <code>repeated string providers = 1;</code>
     * @param index The index of the element to return.
     * @return The providers at the given index.
     */
    java.lang.String getProviders(int index);
    /**
     * <code>repeated string providers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the providers at the given index.
     */
    com.google.protobuf.ByteString
        getProvidersBytes(int index);
  }
  /**
   * Protobuf type {@code connectstate.Suppressions}
   */
  public  static final class Suppressions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:connectstate.Suppressions)
      SuppressionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Suppressions.newBuilder() to construct.
    private Suppressions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Suppressions() {
      providers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.connectstate.Player.internal_static_connectstate_Suppressions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.connectstate.Player.internal_static_connectstate_Suppressions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.connectstate.Player.Suppressions.class, com.spotify.connectstate.Player.Suppressions.Builder.class);
    }

    public static final int PROVIDERS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList providers_;
    /**
     * <code>repeated string providers = 1;</code>
     * @return A list containing the providers.
     */
    public com.google.protobuf.ProtocolStringList
        getProvidersList() {
      return providers_;
    }
    /**
     * <code>repeated string providers = 1;</code>
     * @return The count of providers.
     */
    public int getProvidersCount() {
      return providers_.size();
    }
    /**
     * <code>repeated string providers = 1;</code>
     * @param index The index of the element to return.
     * @return The providers at the given index.
     */
    public java.lang.String getProviders(int index) {
      return providers_.get(index);
    }
    /**
     * <code>repeated string providers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the providers at the given index.
     */
    public com.google.protobuf.ByteString
        getProvidersBytes(int index) {
      return providers_.getByteString(index);
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.spotify.connectstate.Player.Suppressions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code connectstate.Suppressions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:connectstate.Suppressions)
        com.spotify.connectstate.Player.SuppressionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Suppressions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Suppressions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.connectstate.Player.Suppressions.class, com.spotify.connectstate.Player.Suppressions.Builder.class);
      }

      // Construct using com.spotify.connectstate.Player.Suppressions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.connectstate.Player.internal_static_connectstate_Suppressions_descriptor;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Suppressions getDefaultInstanceForType() {
        return com.spotify.connectstate.Player.Suppressions.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Suppressions build() {
        com.spotify.connectstate.Player.Suppressions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.connectstate.Player.Suppressions buildPartial() {
        com.spotify.connectstate.Player.Suppressions result = new com.spotify.connectstate.Player.Suppressions(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          providers_ = providers_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.providers_ = providers_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList providers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureProvidersIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          providers_ = new com.google.protobuf.LazyStringArrayList(providers_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @return A list containing the providers.
       */
      public com.google.protobuf.ProtocolStringList
          getProvidersList() {
        return providers_.getUnmodifiableView();
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @return The count of providers.
       */
      public int getProvidersCount() {
        return providers_.size();
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param index The index of the element to return.
       * @return The providers at the given index.
       */
      public java.lang.String getProviders(int index) {
        return providers_.get(index);
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the providers at the given index.
       */
      public com.google.protobuf.ByteString
          getProvidersBytes(int index) {
        return providers_.getByteString(index);
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param index The index to set the value at.
       * @param value The providers to set.
       * @return This builder for chaining.
       */
      public Builder setProviders(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureProvidersIsMutable();
        providers_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param value The providers to add.
       * @return This builder for chaining.
       */
      public Builder addProviders(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureProvidersIsMutable();
        providers_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param values The providers to add.
       * @return This builder for chaining.
       */
      public Builder addAllProviders(
          java.lang.Iterable<java.lang.String> values) {
        ensureProvidersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, providers_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProviders() {
        providers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string providers = 1;</code>
       * @param value The bytes of the providers to add.
       * @return This builder for chaining.
       */
      public Builder addProvidersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureProvidersIsMutable();
        providers_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:connectstate.Suppressions)
    }

    // @@protoc_insertion_point(class_scope:connectstate.Suppressions)
    private static final com.spotify.connectstate.Player.Suppressions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.connectstate.Player.Suppressions();
    }

    public static com.spotify.connectstate.Player.Suppressions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Suppressions>
        PARSER = new com.google.protobuf.AbstractParser<Suppressions>() {
      @java.lang.Override
      public Suppressions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(
                  builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.spotify.connectstate.Player.Suppressions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_PlayerState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_PlayerState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_PlayerState_ContextMetadataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_PlayerState_ContextMetadataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_PlayerState_PageMetadataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_PlayerState_PageMetadataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_ProvidedTrack_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_ProvidedTrack_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_ProvidedTrack_MetadataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_ProvidedTrack_MetadataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_ContextIndex_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_ContextIndex_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_Restrictions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_Restrictions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_PlayOrigin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_PlayOrigin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_ContextPlayerOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_ContextPlayerOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_connectstate_Suppressions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_connectstate_Suppressions_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\014player.proto\022\014connectstate\"\352\010\n\013PlayerS" +
      "tate\022\021\n\ttimestamp\030\001 \001(\003\022\023\n\013context_uri\030\002" +
      " \001(\t\022\023\n\013context_url\030\003 \001(\t\0228\n\024context_res" +
      "trictions\030\004 \001(\0132\032.connectstate.Restricti" +
      "ons\022-\n\013play_origin\030\005 \001(\0132\030.connectstate." +
      "PlayOrigin\022)\n\005index\030\006 \001(\0132\032.connectstate" +
      ".ContextIndex\022*\n\005track\030\007 \001(\0132\033.connectst" +
      "ate.ProvidedTrack\022\023\n\013playback_id\030\010 \001(\t\022\026" +
      "\n\016playback_speed\030\t \001(\001\022 \n\030position_as_of" +
      "_timestamp\030\n \001(\003\022\020\n\010duration\030\013 \001(\003\022\022\n\nis" +
      "_playing\030\014 \001(\010\022\021\n\tis_paused\030\r \001(\010\022\024\n\014is_" +
      "buffering\030\016 \001(\010\022\033\n\023is_system_initiated\030\017" +
      " \001(\010\0223\n\007options\030\020 \001(\0132\".connectstate.Con" +
      "textPlayerOptions\0220\n\014restrictions\030\021 \001(\0132" +
      "\032.connectstate.Restrictions\0220\n\014suppressi" +
      "ons\030\022 \001(\0132\032.connectstate.Suppressions\0220\n" +
      "\013prev_tracks\030\023 \003(\0132\033.connectstate.Provid" +
      "edTrack\0220\n\013next_tracks\030\024 \003(\0132\033.connectst" +
      "ate.ProvidedTrack\022H\n\020context_metadata\030\025 " +
      "\003(\0132..connectstate.PlayerState.ContextMe" +
      "tadataEntry\022B\n\rpage_metadata\030\026 \003(\0132+.con" +
      "nectstate.PlayerState.PageMetadataEntry\022" +
      "\022\n\nsession_id\030\027 \001(\t\022\026\n\016queue_revision\030\030 " +
      "\001(\t\022\020\n\010position\030\031 \001(\003\022\022\n\nentity_uri\030\032 \001(" +
      "\t\022,\n\007reverse\030\033 \003(\0132\033.connectstate.Provid" +
      "edTrack\022+\n\006future\030\034 \003(\0132\033.connectstate.P" +
      "rovidedTrack\0326\n\024ContextMetadataEntry\022\013\n\003" +
      "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0323\n\021PageMeta" +
      "dataEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028" +
      "\001\"\332\002\n\rProvidedTrack\022\013\n\003uri\030\001 \001(\t\022\013\n\003uid\030" +
      "\002 \001(\t\022;\n\010metadata\030\003 \003(\0132).connectstate.P" +
      "rovidedTrack.MetadataEntry\022\017\n\007removed\030\004 " +
      "\003(\t\022\017\n\007blocked\030\005 \003(\t\022\020\n\010provider\030\006 \001(\t\0220" +
      "\n\014restrictions\030\007 \001(\0132\032.connectstate.Rest" +
      "rictions\022\021\n\talbum_uri\030\010 \001(\t\022\030\n\020disallow_" +
      "reasons\030\t \003(\t\022\022\n\nartist_uri\030\n \001(\t\022\032\n\022dis" +
      "allow_undecided\030\013 \003(\t\032/\n\rMetadataEntry\022\013" +
      "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"+\n\014Contex" +
      "tIndex\022\014\n\004page\030\001 \001(\r\022\r\n\005track\030\002 \001(\r\"\200\010\n\014" +
      "Restrictions\022 \n\030disallow_pausing_reasons" +
      "\030\001 \003(\t\022!\n\031disallow_resuming_reasons\030\002 \003(" +
      "\t\022 \n\030disallow_seeking_reasons\030\003 \003(\t\022%\n\035d" +
      "isallow_peeking_prev_reasons\030\004 \003(\t\022%\n\035di" +
      "sallow_peeking_next_reasons\030\005 \003(\t\022&\n\036dis" +
      "allow_skipping_prev_reasons\030\006 \003(\t\022&\n\036dis" +
      "allow_skipping_next_reasons\030\007 \003(\t\0220\n(dis" +
      "allow_toggling_repeat_context_reasons\030\010 " +
      "\003(\t\022.\n&disallow_toggling_repeat_track_re" +
      "asons\030\t \003(\t\022)\n!disallow_toggling_shuffle" +
      "_reasons\030\n \003(\t\022\"\n\032disallow_set_queue_rea" +
      "sons\030\013 \003(\t\022.\n&disallow_interrupting_play" +
      "back_reasons\030\014 \003(\t\022.\n&disallow_transferr" +
      "ing_playback_reasons\030\r \003(\t\022\'\n\037disallow_r" +
      "emote_control_reasons\030\016 \003(\t\0223\n+disallow_" +
      "inserting_into_next_tracks_reasons\030\017 \003(\t" +
      "\0226\n.disallow_inserting_into_context_trac" +
      "ks_reasons\030\020 \003(\t\0222\n*disallow_reordering_" +
      "in_next_tracks_reasons\030\021 \003(\t\0225\n-disallow" +
      "_reordering_in_context_tracks_reasons\030\022 " +
      "\003(\t\0222\n*disallow_removing_from_next_track" +
      "s_reasons\030\023 \003(\t\0225\n-disallow_removing_fro" +
      "m_context_tracks_reasons\030\024 \003(\t\022)\n!disall" +
      "ow_updating_context_reasons\030\025 \003(\t\022 \n\030dis" +
      "allow_playing_reasons\030\026 \003(\t\022!\n\031disallow_" +
      "stopping_reasons\030\027 \003(\t\"\277\001\n\nPlayOrigin\022\032\n" +
      "\022feature_identifier\030\001 \001(\t\022\027\n\017feature_ver" +
      "sion\030\002 \001(\t\022\020\n\010view_uri\030\003 \001(\t\022\031\n\021external" +
      "_referrer\030\004 \001(\t\022\033\n\023referrer_identifier\030\005" +
      " \001(\t\022\031\n\021device_identifier\030\006 \001(\t\022\027\n\017featu" +
      "re_classes\030\007 \003(\t\"e\n\024ContextPlayerOptions" +
      "\022\031\n\021shuffling_context\030\001 \001(\010\022\031\n\021repeating" +
      "_context\030\002 \001(\010\022\027\n\017repeating_track\030\003 \001(\010\"" +
      "!\n\014Suppressions\022\021\n\tproviders\030\001 \003(\tB\034\n\030co" +
      "m.spotify.connectstateH\002b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_connectstate_PlayerState_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_connectstate_PlayerState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_PlayerState_descriptor,
        new java.lang.String[] { "Timestamp", "ContextUri", "ContextUrl", "ContextRestrictions", "PlayOrigin", "Index", "Track", "PlaybackId", "PlaybackSpeed", "PositionAsOfTimestamp", "Duration", "IsPlaying", "IsPaused", "IsBuffering", "IsSystemInitiated", "Options", "Restrictions", "Suppressions", "PrevTracks", "NextTracks", "ContextMetadata", "PageMetadata", "SessionId", "QueueRevision", "Position", "EntityUri", "Reverse", "Future", });
    internal_static_connectstate_PlayerState_ContextMetadataEntry_descriptor =
      internal_static_connectstate_PlayerState_descriptor.getNestedTypes().get(0);
    internal_static_connectstate_PlayerState_ContextMetadataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_PlayerState_ContextMetadataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_connectstate_PlayerState_PageMetadataEntry_descriptor =
      internal_static_connectstate_PlayerState_descriptor.getNestedTypes().get(1);
    internal_static_connectstate_PlayerState_PageMetadataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_PlayerState_PageMetadataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_connectstate_ProvidedTrack_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_connectstate_ProvidedTrack_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_ProvidedTrack_descriptor,
        new java.lang.String[] { "Uri", "Uid", "Metadata", "Removed", "Blocked", "Provider", "Restrictions", "AlbumUri", "DisallowReasons", "ArtistUri", "DisallowUndecided", });
    internal_static_connectstate_ProvidedTrack_MetadataEntry_descriptor =
      internal_static_connectstate_ProvidedTrack_descriptor.getNestedTypes().get(0);
    internal_static_connectstate_ProvidedTrack_MetadataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_ProvidedTrack_MetadataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_connectstate_ContextIndex_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_connectstate_ContextIndex_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_ContextIndex_descriptor,
        new java.lang.String[] { "Page", "Track", });
    internal_static_connectstate_Restrictions_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_connectstate_Restrictions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_Restrictions_descriptor,
        new java.lang.String[] { "DisallowPausingReasons", "DisallowResumingReasons", "DisallowSeekingReasons", "DisallowPeekingPrevReasons", "DisallowPeekingNextReasons", "DisallowSkippingPrevReasons", "DisallowSkippingNextReasons", "DisallowTogglingRepeatContextReasons", "DisallowTogglingRepeatTrackReasons", "DisallowTogglingShuffleReasons", "DisallowSetQueueReasons", "DisallowInterruptingPlaybackReasons", "DisallowTransferringPlaybackReasons", "DisallowRemoteControlReasons", "DisallowInsertingIntoNextTracksReasons", "DisallowInsertingIntoContextTracksReasons", "DisallowReorderingInNextTracksReasons", "DisallowReorderingInContextTracksReasons", "DisallowRemovingFromNextTracksReasons", "DisallowRemovingFromContextTracksReasons", "DisallowUpdatingContextReasons", "DisallowPlayingReasons", "DisallowStoppingReasons", });
    internal_static_connectstate_PlayOrigin_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_connectstate_PlayOrigin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_PlayOrigin_descriptor,
        new java.lang.String[] { "FeatureIdentifier", "FeatureVersion", "ViewUri", "ExternalReferrer", "ReferrerIdentifier", "DeviceIdentifier", "FeatureClasses", });
    internal_static_connectstate_ContextPlayerOptions_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_connectstate_ContextPlayerOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_ContextPlayerOptions_descriptor,
        new java.lang.String[] { "ShufflingContext", "RepeatingContext", "RepeatingTrack", });
    internal_static_connectstate_Suppressions_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_connectstate_Suppressions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_connectstate_Suppressions_descriptor,
        new java.lang.String[] { "Providers", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
