<?xml version="1.0" encoding="UTF-8"?>
<issues format="5" by="lint 4.2.0-beta02" client="gradle" variant="debug" version="4.2.0-beta02">

    <issue
        id="BanSynchronizedMethods"
        message="Use of synchronized methods is not recommended"
        errorLine1="    @Override"
        errorLine2="    ^">
        <location
            file="src/main/java/androidx/media2/player/TextRenderer.java"
            line="132"
            column="5"/>
    </issue>

    <issue
        id="BanSynchronizedMethods"
        message="Use of synchronized methods is not recommended"
        errorLine1="    @Override"
        errorLine2="    ^">
        <location
            file="src/main/java/androidx/media2/player/TextRenderer.java"
            line="137"
            column="5"/>
    </issue>

    <issue
        id="BanSynchronizedMethods"
        message="Use of synchronized methods is not recommended"
        errorLine1="    /** Clears any previous selection. */"
        errorLine2="    ^">
        <location
            file="src/main/java/androidx/media2/player/TextRenderer.java"
            line="224"
            column="5"/>
    </issue>

    <issue
        id="BanSynchronizedMethods"
        message="Use of synchronized methods is not recommended"
        errorLine1="    /** Selects the specified track type/channel for extraction and rendering. */"
        errorLine2="    ^">
        <location
            file="src/main/java/androidx/media2/player/TextRenderer.java"
            line="229"
            column="5"/>
    </issue>

    <issue
        id="BanUncheckedReflection"
        message="Calling Method.invoke without an SDK check"
        errorLine1="            return (FileDescriptor) method.invoke(object, fileDescriptor);"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="100"
            column="37"/>
    </issue>

    <issue
        id="BanUncheckedReflection"
        message="Calling Method.invoke without an SDK check"
        errorLine1="            method.invoke(object, fileDescriptor, position, /* whence= */ SEEK_SET);"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="125"
            column="13"/>
    </issue>

    <issue
        id="BanUncheckedReflection"
        message="Calling Method.invoke without an SDK check"
        errorLine1="            return (FileDescriptor) method.invoke(object, fileDescriptor);"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="150"
            column="37"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.ExoPlayerWrapper is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="        PersistableBundle bundle = new PersistableBundle();"
        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="401"
            column="36"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.ExoPlayerWrapper is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            bundle.putString(MediaPlayer2.MetricsConstants.MIME_TYPE_VIDEO, primaryVideoMimeType);"
        errorLine2="                   ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="403"
            column="20"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.ExoPlayerWrapper is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            bundle.putString(MediaPlayer2.MetricsConstants.MIME_TYPE_AUDIO, primaryAudioMimeType);"
        errorLine2="                   ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="406"
            column="20"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.ExoPlayerWrapper is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="        bundle.putLong(MediaPlayer2.MetricsConstants.DURATION,"
        errorLine2="               ~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="408"
            column="16"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.ExoPlayerWrapper is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="        bundle.putLong(MediaPlayer2.MetricsConstants.PLAYING, playingTimeMs);"
        errorLine2="               ~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="410"
            column="16"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.FileDescriptorUtil is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            return Os.dup(fileDescriptor);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="84"
            column="23"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.FileDescriptorUtil is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            Os.lseek(fileDescriptor, position, /* whence= */ OsConstants.SEEK_SET);"
        errorLine2="               ~~~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="109"
            column="16"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class androidx.media2.player.FileDescriptorUtil is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            Os.close(fileDescriptor);"
        errorLine2="               ~~~~~">
        <location
            file="src/main/java/androidx/media2/player/FileDescriptorUtil.java"
            line="134"
            column="16"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.MediaTimestamp is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="        mMediaTimeUs = timestamp.getAnchorMediaTimeUs();"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaTimestamp.java"
            line="84"
            column="34"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.MediaTimestamp is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="        mNanoTime = timestamp.getAnchorSytemNanoTime();"
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaTimestamp.java"
            line="85"
            column="31"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.MediaTimestamp is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="        mClockRate = timestamp.getMediaClockRate();"
        errorLine2="                               ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaTimestamp.java"
            line="86"
            column="32"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                return mPlaybackParams.getAudioFallbackMode();"
        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="115"
            column="40"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                return mPlaybackParams.getPitch();"
        errorLine2="                                       ~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="130"
            column="40"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                return mPlaybackParams.getSpeed();"
        errorLine2="                                       ~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="145"
            column="40"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams.Builder is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                mPlaybackParams = new android.media.PlaybackParams();"
        errorLine2="                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="188"
            column="35"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams.Builder is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                mPlaybackParams.setAudioFallbackMode(audioFallbackMode);"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="224"
            column="33"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams.Builder is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                mPlaybackParams.setPitch(pitch);"
        errorLine2="                                ~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="246"
            column="33"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.PlaybackParams.Builder is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="                mPlaybackParams.setSpeed(speed);"
        errorLine2="                                ~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="268"
            column="33"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.TimedMetaData is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="        mTimestampUs = timedMetaData.getTimestamp();"
        errorLine2="                                     ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TimedMetaData.java"
            line="46"
            column="38"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class androidx.media2.player.TimedMetaData is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)."
        errorLine1="        mMetaData = timedMetaData.getMetaData();"
        errorLine2="                                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TimedMetaData.java"
            line="47"
            column="35"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onPrepared(MediaItem mediaItem);"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="92"
            column="25"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onBufferingStarted(MediaItem mediaItem);"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="101"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onBufferingEnded(MediaItem mediaItem);"
        errorLine2="                              ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="104"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onBufferingUpdate(MediaItem mediaItem, int bufferingPercentage);"
        errorLine2="                               ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="107"
            column="32"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onBandwidthSample(MediaItem mediaItem2, int bitrateKbps);"
        errorLine2="                               ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="110"
            column="32"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onVideoRenderingStart(MediaItem mediaItem);"
        errorLine2="                                   ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="113"
            column="36"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onVideoSizeChanged(MediaItem mediaItem, int width, int height);"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="116"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onTimedMetadata(MediaItem mediaItem, TimedMetaData timedMetaData);"
        errorLine2="                             ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="123"
            column="30"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onTimedMetadata(MediaItem mediaItem, TimedMetaData timedMetaData);"
        errorLine2="                                                  ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="123"
            column="51"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onMediaItemStartedAsNext(MediaItem mediaItem);"
        errorLine2="                                      ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="126"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onMediaItemEnded(MediaItem mediaItem);"
        errorLine2="                              ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="129"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onLoop(MediaItem mediaItem);"
        errorLine2="                    ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="132"
            column="21"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onMediaTimeDiscontinuity(MediaItem mediaItem, MediaTimestamp mediaTimestamp);"
        errorLine2="                                      ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="135"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onMediaTimeDiscontinuity(MediaItem mediaItem, MediaTimestamp mediaTimestamp);"
        errorLine2="                                                           ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="135"
            column="60"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onPlaybackEnded(MediaItem mediaItem);"
        errorLine2="                             ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="138"
            column="30"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onError(MediaItem mediaItem, int what);"
        errorLine2="                     ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/ExoPlayerWrapper.java"
            line="141"
            column="22"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public PersistableBundle getMetrics() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer.java"
            line="2167"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, int width, int height) { }"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="824"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, int width, int height) { }"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="824"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, TimedMetaData data) { }"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="844"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, TimedMetaData data) { }"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="844"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, TimedMetaData data) { }"
        errorLine2="                                                 ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="844"
            column="50"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @MediaError int what, int extra) { }"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="856"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @MediaError int what, int extra) { }"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="856"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onInfo(MediaPlayer2 mp, MediaItem item, @MediaInfo int what, int extra) { }"
        errorLine2="                           ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="867"
            column="28"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onInfo(MediaPlayer2 mp, MediaItem item, @MediaInfo int what, int extra) { }"
        errorLine2="                                            ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="867"
            column="45"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @CallCompleted int what,"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="878"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @CallCompleted int what,"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="878"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, MediaTimestamp timestamp) { }"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="902"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, MediaTimestamp timestamp) { }"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="902"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, MediaTimestamp timestamp) { }"
        errorLine2="                                                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="902"
            column="50"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onCommandLabelReached(MediaPlayer2 mp, @NonNull Object label) { }"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="911"
            column="43"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onDrmConfig(MediaPlayer2 mp, MediaItem item);"
        errorLine2="                         ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1452"
            column="26"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onDrmConfig(MediaPlayer2 mp, MediaItem item);"
        errorLine2="                                          ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1452"
            column="43"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onDrmInfo(MediaPlayer2 mp, MediaItem item, DrmInfo drmInfo) { }"
        errorLine2="                              ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1479"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onDrmInfo(MediaPlayer2 mp, MediaItem item, DrmInfo drmInfo) { }"
        errorLine2="                                               ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1479"
            column="48"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public void onDrmInfo(MediaPlayer2 mp, MediaItem item, DrmInfo drmInfo) { }"
        errorLine2="                                                               ~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1479"
            column="64"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @PrepareDrmStatusCode int status) { }"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1490"
            column="17"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="                MediaPlayer2 mp, MediaItem item, @PrepareDrmStatusCode int status) { }"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1490"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public abstract Map&lt;UUID, byte[]&gt; getPssh();"
        errorLine2="                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1714"
            column="25"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public abstract List&lt;UUID> getSupportedSchemes();"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/MediaPlayer2.java"
            line="1721"
            column="25"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public android.media.PlaybackParams getPlaybackParams() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="165"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        public Builder(android.media.PlaybackParams playbackParams) {"
        errorLine2="                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/PlaybackParams.java"
            line="195"
            column="24"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="        void onCcData(byte[] data, long timeUs);"
        errorLine2="                      ~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TextRenderer.java"
            line="53"
            column="23"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public TimedMetaData(android.media.TimedMetaData timedMetaData) {"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TimedMetaData.java"
            line="45"
            column="26"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public TimedMetaData(long timestampUs, byte[] metaData) {"
        errorLine2="                                           ~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TimedMetaData.java"
            line="54"
            column="44"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public byte[] getMetaData() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/androidx/media2/player/TimedMetaData.java"
            line="71"
            column="12"/>
    </issue>

</issues>
