<?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="MissingSuperCall"
        message="Overriding method should call `super.onPictureInPictureModeChanged`"
        errorLine1="    public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportActivity.java"
            line="43"
            column="17"/>
    </issue>

    <issue
        id="MissingSuperCall"
        message="Overriding method should call `super.onPictureInPictureModeChanged`"
        errorLine1="    public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportActivity.java"
            line="43"
            column="17"/>
    </issue>

    <issue
        id="MissingClass"
        message="Class referenced in the layout file, `com.example.android.leanback.PlaybackOverlayFragment`, was not found in the project or the libraries"
        errorLine1="        android:name=&quot;com.example.android.leanback.PlaybackOverlayFragment&quot;"
        errorLine2="                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/layout/playback_controls.xml"
            line="23"
            column="23"/>
    </issue>

    <issue
        id="MissingClass"
        message="Class referenced in the layout file, `com.example.android.leanback.PlaybackOverlaySupportFragment`, was not found in the project or the libraries"
        errorLine1="        android:name=&quot;com.example.android.leanback.PlaybackOverlaySupportFragment&quot;"
        errorLine2="                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/layout/playback_controls_support.xml"
            line="25"
            column="23"/>
    </issue>

    <issue
        id="BanSynchronizedMethods"
        message="Use of synchronized methods is not recommended"
        errorLine1="    /**"
        errorLine2="    ^">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="35"
            column="5"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 32 (leanback.BrowseAnimationFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="59"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 30 (leanback.BrowseSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="69"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 30 (leanback.BrowseSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="92"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="69"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="136"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="153"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="72"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="139"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="156"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 29 (leanback.ErrorSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/ErrorSupportFragment.java"
            line="32"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 29 (leanback.ErrorSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;button clicked&quot;);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/ErrorSupportFragment.java"
            line="46"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 44 (leanback.GuidedStepSupportHalfScreenActivity)"
        errorLine1="        Log.v(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="43"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 44 (leanback.GuidedStepSupportHalfScreenActivity)"
        errorLine1="        Log.v(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="46"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="                Log.v(TAG, &quot;onScrollStateChanged &quot;"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="48"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="                        if (DEBUG) Log.d(TAG, &quot;onChildSelected position=&quot; + position);"
        errorLine2="                                         ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="66"
            column="42"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="        if (DEBUG) Log.v(TAG, &quot;onCreate&quot;);"
        errorLine2="                         ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="77"
            column="26"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="        if (DEBUG) Log.v(TAG, &quot;onNewIntent &quot; + intent);"
        errorLine2="                         ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="89"
            column="26"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="            if (DEBUG) Log.v(TAG, &quot;createViewHolder &quot; + viewType);"
        errorLine2="                             ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="131"
            column="30"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 26 (HorizontalGridTestActivity)"
        errorLine1="            if (DEBUG) Log.v(TAG, &quot;bindViewHolder &quot; + position + &quot; &quot; + baseHolder);"
        errorLine2="                             ~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="143"
            column="30"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="116"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="217"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 24 (leanback.DetailsFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="234"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="119"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="220"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 31 (leanback.DetailsSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="237"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 33 (leanback.PlaybackControlsFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackFragment.java"
            line="67"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 33 (leanback.PlaybackControlsFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportFragment.java"
            line="70"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 28 (PlaybackTransportControlGlue)"
        errorLine1="            Log.e(TAG, &quot;disconnectToMediaSession: Media session disconnected&quot;);"
        errorLine2="                  ~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlGlueSample.java"
            line="156"
            column="19"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 28 (leanback.RowsSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="56"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 28 (leanback.RowsSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="64"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 30 (leanback.SearchSupportFragment)"
        errorLine1="        Log.i(TAG, String.format(&quot;Search Query Text Change %s&quot;, newQuery));"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="111"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 30 (leanback.SearchSupportFragment)"
        errorLine1="        Log.i(TAG, String.format(&quot;Search Query Text Submit %s&quot;, query));"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="119"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 29 (leanback.VerticalGridFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="51"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 29 (leanback.VerticalGridFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="94"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 29 (leanback.VerticalGridFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="102"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 36 (leanback.VerticalGridSupportFragment)"
        errorLine1="        Log.i(TAG, &quot;onCreate&quot;);"
        errorLine2="              ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="54"
            column="15"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 36 (leanback.VerticalGridSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemSelected: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="97"
            column="23"/>
    </issue>

    <issue
        id="LongLogTag"
        message="The logging tag can be at most 23 characters, was 36 (leanback.VerticalGridSupportFragment)"
        errorLine1="                Log.i(TAG, &quot;onItemClicked: &quot; + item + &quot; row &quot; + row);"
        errorLine2="                      ~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="105"
            column="23"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class null 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="                mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="419"
            column="25"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class null 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="                mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                  ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="419"
            column="51"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class null 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="                mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                                      ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="419"
            column="71"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="            if (mPlayer.getPlaybackParams().getSpeed() != NORMAL_SPEED) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="705"
            column="25"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="            if (mPlayer.getPlaybackParams().getSpeed() != NORMAL_SPEED) {"
        errorLine2="                                            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="705"
            column="45"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="763"
            column="17"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="763"
            column="43"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="763"
            column="63"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="797"
            column="17"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="797"
            column="43"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="797"
            column="63"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="840"
            column="17"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="840"
            column="43"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="840"
            column="63"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="932"
            column="17"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="932"
            column="43"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.leanback.MediaSessionService 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="        mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                                              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="932"
            column="63"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 24, the call containing class null is not annotated with @RequiresApi(x) where x is at least 24. Either annotate the containing class with at least @RequiresApi(24) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(24)."
        errorLine1="                        getActivity().enterPictureInPictureMode();"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackFragment.java"
            line="90"
            column="39"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 24, the call containing class null is not annotated with @RequiresApi(x) where x is at least 24. Either annotate the containing class with at least @RequiresApi(24) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(24)."
        errorLine1="                        getActivity().enterPictureInPictureMode();"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportFragment.java"
            line="93"
            column="39"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 24, the call containing class null is not annotated with @RequiresApi(x) where x is at least 24. Either annotate the containing class with at least @RequiresApi(24) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(24)."
        errorLine1="                        getActivity().enterPictureInPictureMode();"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlFragment.java"
            line="76"
            column="39"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 24, the call containing class null is not annotated with @RequiresApi(x) where x is at least 24. Either annotate the containing class with at least @RequiresApi(24) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(24)."
        errorLine1="                        getActivity().enterPictureInPictureMode();"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportFragment.java"
            line="79"
            column="39"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="GuidedStepFragment.SLIDE_FROM_BOTTOM can only be accessed from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="            setEntranceTransitionType(GuidedStepFragment.SLIDE_FROM_BOTTOM);"
        errorLine2="                                                         ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="76"
            column="58"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="GuidedStepFragment.setEntranceTransitionType can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="            setEntranceTransitionType(GuidedStepFragment.SLIDE_FROM_BOTTOM);"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="76"
            column="13"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="GuidedStepSupportFragment.SLIDE_FROM_BOTTOM can only be accessed from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="            setEntranceTransitionType(GuidedStepSupportFragment.SLIDE_FROM_BOTTOM);"
        errorLine2="                                                                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="79"
            column="65"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="GuidedStepSupportFragment.setEntranceTransitionType can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="            setEntranceTransitionType(GuidedStepSupportFragment.SLIDE_FROM_BOTTOM);"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="79"
            column="13"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        MediaPlayerGlue mediaPlayerGlue = new MediaPlayerGlue(getActivity());"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="82"
            column="43"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setMode can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setMode(MediaPlayerGlue.REPEAT_ONE);"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="84"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setArtist can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setArtist(&quot;A Googler&quot;);"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="85"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setTitle can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setTitle(&quot;Diving with Sharks Trailer&quot;);"
        errorLine2="                        ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="86"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setMediaSource can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setMediaSource(Uri.parse(&quot;android.resource://com.example.android.leanback/&quot;"
        errorLine2="                        ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="87"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        MediaPlayerGlue mediaPlayerGlue = new MediaPlayerGlue(getActivity());"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="85"
            column="43"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setMode can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setMode(MediaPlayerGlue.REPEAT_ONE);"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="87"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setArtist can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setArtist(&quot;A Googler&quot;);"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="88"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setTitle can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setTitle(&quot;Diving with Sharks Trailer&quot;);"
        errorLine2="                        ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="89"
            column="25"/>
    </issue>

    <issue
        id="RestrictedApi"
        message="MediaPlayerGlue.setMediaSource can only be called from within the same library group prefix (referenced groupId=`androidx.leanback` with prefix androidx from groupId=`androidx`)"
        errorLine1="        mediaPlayerGlue.setMediaSource(Uri.parse(&quot;android.resource://com.example.android.leanback/&quot;"
        errorLine2="                        ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="90"
            column="25"/>
    </issue>

    <issue
        id="UnsupportedChromeOsHardware"
        message="Expecting `android:required=&quot;false&quot;` for this hardware feature that may not be supported by all Chrome OS devices"
        errorLine1="        android:required=&quot;true&quot;/>"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/AndroidManifest.xml"
            line="9"
            column="9"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.array.pref_parent_control_entries_summaries` appears to be unused"
        errorLine1="    &lt;array name=&quot;pref_parent_control_entries_summaries&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/arrays.xml"
            line="46"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.raw.browse` appears to be unused">
        <location
            file="src/main/res/raw/browse.mp4"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.details_img` appears to be unused">
        <location
            file="src/main/res/drawable/details_img.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.google_android` appears to be unused">
        <location
            file="src/main/res/drawable/google_android.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.google_logo` appears to be unused">
        <location
            file="src/main/res/drawable/google_logo.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.google_photo` appears to be unused">
        <location
            file="src/main/res/drawable/google_photo.jpeg"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.ic_guidedstep_option_a` appears to be unused">
        <location
            file="src/main/res/drawable/ic_guidedstep_option_a.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.ic_guidedstep_option_b` appears to be unused">
        <location
            file="src/main/res/drawable/ic_guidedstep_option_b.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.ic_guidedstep_option_c` appears to be unused">
        <location
            file="src/main/res/drawable/ic_guidedstep_option_c.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.drawable.ic_settings_wifi_3_bar` appears to be unused">
        <location
            file="src/main/res/drawable-xhdpi/ic_settings_wifi_3_bar.png"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.raw.media0` appears to be unused">
        <location
            file="src/main/res/raw/media0.mp3"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.raw.media1` appears to be unused">
        <location
            file="src/main/res/raw/media1.mp3"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.layout.playback_controls` appears to be unused"
        errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;"
        errorLine2="^">
        <location
            file="src/main/res/layout/playback_controls.xml"
            line="17"
            column="1"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.layout.playback_controls_support` appears to be unused"
        errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;"
        errorLine2="^">
        <location
            file="src/main/res/layout/playback_controls_support.xml"
            line="19"
            column="1"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.playbackoverlay` appears to be unused"
        errorLine1="    &lt;string name=&quot;playbackoverlay&quot;>PlaybackOverlay&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="55"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.playbackoverlay_description` appears to be unused"
        errorLine1="    &lt;string name=&quot;playbackoverlay_description&quot;>PlaybackOverlayFragment test&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="56"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.playbackoverlay_support` appears to be unused"
        errorLine1="    &lt;string name=&quot;playbackoverlay_support&quot;>PlaybackOverlay(support version)&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="57"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.playbackoverlay_support_description` appears to be unused"
        errorLine1="    &lt;string name=&quot;playbackoverlay_support_description&quot;>PlaybackOverlaySupportFragment test&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="58"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.legacydetails_off` appears to be unused"
        errorLine1="    &lt;string name=&quot;legacydetails_off&quot;>Use New DetailsPresenter&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="78"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.legacydetails_on` appears to be unused"
        errorLine1="    &lt;string name=&quot;legacydetails_on&quot;>Use Legacy DetailsPresenter&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="79"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.string.guidedstep_fourth_description` appears to be unused"
        errorLine1="    &lt;string name=&quot;guidedstep_fourth_description&quot;>Fourth step of guided sequence&lt;/string>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/strings.xml"
            line="103"
            column="13"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_SearchDetails` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.SearchDetails&quot; parent=&quot;Theme.AppCompat.Leanback.Details.NoSharedElementTransition&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="23"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_Details` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.Details&quot; parent=&quot;Theme.AppCompat.Leanback.Details&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="25"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_Details_CustomTitle` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.Details.CustomTitle&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="27"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_Rows` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.Rows&quot; parent=&quot;Theme.AppCompat.Leanback&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="32"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_GuidedStep` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.GuidedStep&quot; parent=&quot;Theme.AppCompat.Leanback.GuidedStep&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="36"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_GuidedStep_First` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.GuidedStep.First&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="39"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_GuidedStep_Half` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.GuidedStep.Half&quot; parent=&quot;Theme.AppCompat.Leanback.GuidedStep.Half&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="42"
            column="12"/>
    </issue>

    <issue
        id="UnusedResources"
        message="The resource `R.style.Theme_Example_AppCompat_Leanback_Preferences` appears to be unused"
        errorLine1="    &lt;style name=&quot;Theme.Example.AppCompat.Leanback.Preferences&quot;>"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/values/themes_appcompat.xml"
            line="44"
            column="12"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="76"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sRand` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                                int count = sRand.nextInt(4) + 1;"
        errorLine2="                                            ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="181"
            column="45"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sRand` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                                int count = sRand.nextInt(4) + 1;"
        errorLine2="                                            ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="198"
            column="45"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    int index = mRowsAdapter.indexOf(row);"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="211"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sRand` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        int headerId = sRand.nextInt();"
        errorLine2="                                       ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="213"
            column="40"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        mRowsAdapter.add(index, createRandomRow(new HeaderItem("
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="214"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    int index = mRowsAdapter.indexOf(row);"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="224"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sRand` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        int headerId = sRand.nextInt();"
        errorLine2="                                       ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="226"
            column="40"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        mRowsAdapter.add("
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="227"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    mRowsAdapter.remove(row);"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="238"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    int index = mRowsAdapter.indexOf(row);"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="246"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        mRowsAdapter.removeItems(index - 1, 1);"
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="248"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    int index = mRowsAdapter.indexOf(row);"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="257"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                    if (index &lt; mRowsAdapter.size() - 1) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="258"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `BrowseAnimationFragment` requires synthetic accessor"
        errorLine1="                        mRowsAdapter.removeItems(index + 1, 1);"
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="259"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="84"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `setupRows` of class `BrowseFragment` requires synthetic accessor"
        errorLine1="                setupRows();"
        errorLine2="                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="111"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadData` of class `BrowseFragment` requires synthetic accessor"
        errorLine1="                loadData();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="112"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="87"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `setupRows` of class `BrowseSupportFragment` requires synthetic accessor"
        errorLine1="                setupRows();"
        errorLine2="                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="114"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadData` of class `BrowseSupportFragment` requires synthetic accessor"
        errorLine1="                loadData();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="115"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = (DetailsOverviewRow) mRowsAdapter.get(0);"
        errorLine2="                                                              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="101"
            column="63"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="106"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(mPhotoItem.getTitle() + &quot;(Owned)&quot;);"
        errorLine2="                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="109"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="116"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(mPhotoItem.getTitle() + &quot;(Rented)&quot;);"
        errorLine2="                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="118"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle());"
        errorLine2="                                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="190"
            column="65"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                        mPhotoItem.getImageResourceId(), context.getTheme()));"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="192"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionRent` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                adapter.set(ACTION_RENT, mActionRent);"
        errorLine2="                                         ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="194"
            column="42"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="195"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                mRowsAdapter.add(0, dor);"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="197"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsFragment` requires synthetic accessor"
        errorLine1="                    mRowsAdapter.add(new ListRow(header, listRowAdapter));"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="212"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="            for (int i = 0; i &lt; OPTION_NAMES.length; i++) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="90"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_IDS` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                if (OPTION_IDS[i] == ACTION_ID_SWITCH_LEGACY_ON) {"
        errorLine2="                    ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="92"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_IDS` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                } else if (OPTION_IDS[i] == ACTION_ID_SWITCH_LEGACY_OFF) {"
        errorLine2="                           ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="96"
            column="28"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_IDS` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, OPTION_IDS[i], OPTION_NAMES[i],"
        errorLine2="                                          ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="101"
            column="43"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, OPTION_IDS[i], OPTION_NAMES[i],"
        errorLine2="                                                         ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="101"
            column="58"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, OPTION_IDS[i], OPTION_NAMES[i],"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="101"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_DESCRIPTIONS` of class `DetailsPresenterSelectionActivity` requires synthetic accessor"
        errorLine1="                        OPTION_DESCRIPTIONS[i], checked);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="102"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = (DetailsOverviewRow) mRowsAdapter.get(0);"
        errorLine2="                                                              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="104"
            column="63"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="109"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(mPhotoItem.getTitle() + &quot;(Owned)&quot;);"
        errorLine2="                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="112"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="119"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(mPhotoItem.getTitle() + &quot;(Rented)&quot;);"
        errorLine2="                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="121"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle());"
        errorLine2="                                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="193"
            column="65"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mPhotoItem.getImageResourceId(), context.getTheme()));"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="195"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionRent` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                adapter.set(ACTION_RENT, mActionRent);"
        errorLine2="                                         ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="197"
            column="42"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="198"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                mRowsAdapter.add(0, dor);"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="200"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `DetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    mRowsAdapter.add(new ListRow(header, listRowAdapter));"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="215"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(actions, NEW_PAYMENT, &quot;Input credit card number&quot;, &quot;&quot;,"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="291"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addDatePickerAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addDatePickerAction(actions, PAYMENT_EXPIRE, &quot;Exp:&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="294"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(getActivity(), actions, FIRST_NAME, &quot;Pat&quot;, &quot;Your first name&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="419"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(getActivity(), actions, LAST_NAME, &quot;Smith&quot;, &quot;Your last name&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="420"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            updatePaymentAction(addAction(actions, PAYMENT, &quot;Select Payment&quot;, &quot;&quot;, subActions));"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="422"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableDescriptionAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addEditableDescriptionAction(actions, PASSWORD, &quot;Password&quot;, &quot;&quot;, &quot;&quot;,"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="423"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(subActions, -1, sCards.get(i), &quot;&quot;,"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="448"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addAction(subActions, NEW_PAYMENT, &quot;Add New Card&quot;, &quot;&quot;);"
        errorLine2="            ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="454"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            for (int i = 0; i &lt; OPTION_NAMES.length; i++) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="569"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, RADIO_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                                                             ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="570"
            column="62"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, RADIO_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="570"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_DESCRIPTIONS` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                        OPTION_DESCRIPTIONS[i], GuidedAction.DEFAULT_CHECK_SET_ID);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="571"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            for (int i = 0; i &lt; OPTION_NAMES.length; i++) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="576"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, CHECKBOX_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                                                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="577"
            column="65"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, CHECKBOX_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="577"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_DESCRIPTIONS` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="                        OPTION_DESCRIPTIONS[i], GuidedAction.CHECKBOX_CHECK_SET_ID);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="578"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            String description = &quot;You chose: &quot; + OPTION_NAMES[(int) getOption()];"
        errorLine2="                                                 ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="621"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepActivity` requires synthetic accessor"
        errorLine1="            addAction(actions, BACK, &quot;Start Over&quot;, &quot;Let&apos;s try this again...&quot;);"
        errorLine2="            ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="634"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(actions, NEW_PAYMENT, &quot;Input credit card number&quot;, &quot;&quot;,"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="294"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addDatePickerAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addDatePickerAction(actions, PAYMENT_EXPIRE, &quot;Exp:&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="297"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(getActivity(), actions, FIRST_NAME, &quot;Pat&quot;, &quot;Your first name&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="422"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addEditableAction(getActivity(), actions, LAST_NAME, &quot;Smith&quot;, &quot;Your last name&quot;);"
        errorLine2="            ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="423"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            updatePaymentAction(addAction(actions, PAYMENT, &quot;Select Payment&quot;, &quot;&quot;, subActions));"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="425"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addEditableDescriptionAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addEditableDescriptionAction(actions, PASSWORD, &quot;Password&quot;, &quot;&quot;, &quot;&quot;,"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="426"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(subActions, -1, sCards.get(i), &quot;&quot;,"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="451"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addAction(subActions, NEW_PAYMENT, &quot;Add New Card&quot;, &quot;&quot;);"
        errorLine2="            ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="457"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            for (int i = 0; i &lt; OPTION_NAMES.length; i++) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="572"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, RADIO_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                                                             ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="573"
            column="62"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, RADIO_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="573"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_DESCRIPTIONS` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                        OPTION_DESCRIPTIONS[i], GuidedAction.DEFAULT_CHECK_SET_ID);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="574"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            for (int i = 0; i &lt; OPTION_NAMES.length; i++) {"
        errorLine2="                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="579"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, CHECKBOX_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                                                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="580"
            column="65"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addCheckedAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                addCheckedAction(actions, CHECKBOX_ID_BASE + i, OPTION_NAMES[i],"
        errorLine2="                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="580"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_DESCRIPTIONS` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="                        OPTION_DESCRIPTIONS[i], GuidedAction.CHECKBOX_CHECK_SET_ID);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="581"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `OPTION_NAMES` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            String description = &quot;You chose: &quot; + OPTION_NAMES[(int) getOption()];"
        errorLine2="                                                 ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="624"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `addAction` of class `GuidedStepSupportActivity` requires synthetic accessor"
        errorLine1="            addAction(actions, BACK, &quot;Start Over&quot;, &quot;Let&apos;s try this again...&quot;);"
        errorLine2="            ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="637"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHorizontalGridView` of class `HorizontalGridTestActivity` requires synthetic accessor"
        errorLine1="            mHorizontalGridView.getAdapter().notifyDataSetChanged();"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="114"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mItemFocusChangeListener` of class `HorizontalGridTestActivity` requires synthetic accessor"
        errorLine1="            textView.setOnFocusChangeListener(mItemFocusChangeListener);"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="136"
            column="47"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mItemClickListener` of class `HorizontalGridTestActivity` requires synthetic accessor"
        errorLine1="            textView.setOnClickListener(mItemClickListener);"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="137"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `isPlaying` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                            if (isPlaying()) {"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="95"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `audioFocusLossHandler` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                                audioFocusLossHandler();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="96"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `isPlaying` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                            if (isPlaying()) {"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="100"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `audioLossFocusTransientHandler` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                                audioLossFocusTransientHandler();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="101"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `isPlaying` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                            if (isPlaying()) {"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="105"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `audioLossFocusTransientCanDuckHanlder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                                audioLossFocusTransientCanDuckHanlder();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="106"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `isPlaying` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                            if (!isPlaying()) {"
        errorLine2="                                 ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="110"
            column="34"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `audioFocusGainHandler` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                                audioFocusGainHandler();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="111"
            column="33"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `MediaPlayerAudioHandler` requires synthetic accessor"
        errorLine1="    private Handler mMediaPlayerHandler = new MediaPlayerAudioHandler();"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="156"
            column="43"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlayer` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            mPlayer.stop();"
        errorLine2="            ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="177"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="            ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="178"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="178"
            column="44"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerHandler` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaPlayerHandler.obtainMessage(FOCUS_CHANGE, focusChange, 0).sendToTarget();"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="191"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `MediaSessionCallback` requires synthetic accessor"
        errorLine1="            mMediaSession.setCallback(new MediaSessionCallback());"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="220"
            column="39"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mInitialized` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mInitialized = true;"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="341"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `notifyUiWhenPlayerIsPrepared` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                notifyUiWhenPlayerIsPrepared();"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="344"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `onMediaSessionMetaDataChanged` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                onMediaSessionMetaDataChanged();"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="348"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="349"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="349"
            column="48"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    PlaybackStateCompat.Builder builder = createPlaybackStateBuilder("
        errorLine2="                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="359"
            column="59"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaSession.setPlaybackState(builder.build());"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="363"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mFastForwardSpeedFactorIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mFastForwardSpeedFactorIndex = 0;"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="416"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRewindSpeedFactorIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mRewindSpeedFactorIndex = 0;"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="417"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlayer` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="419"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlayer` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed("
        errorLine2="                                          ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="419"
            column="43"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mFastForwardSpeedFactorIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mFastForwardSpeedFactors[mFastForwardSpeedFactorIndex]));"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="420"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mFastForwardSpeedFactors` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mFastForwardSpeedFactors[mFastForwardSpeedFactorIndex]));"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="420"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlayer` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mPlayer.pause();"
        errorLine2="                ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="422"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="423"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="423"
            column="48"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRepeatState` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                if (mRepeatState == MEDIA_ACTION_REPEAT_ALL"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="426"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        &amp;&amp; mCurrentIndex == mMediaItemList.size() - 1) {"
        errorLine2="                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="427"
            column="28"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mShuffleMode` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    if (mShuffleMode == PlaybackStateCompat.SHUFFLE_MODE_NONE) {"
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="430"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex = 0;"
        errorLine2="                        ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="431"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex = generateMediaItemIndex();"
        errorLine2="                        ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="434"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `generateMediaItemIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex = generateMediaItemIndex();"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="434"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mCurrentMediaItem = mMediaItemList.get(mCurrentIndex);"
        errorLine2="                                                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="436"
            column="60"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentMediaItem` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mCurrentMediaItem = mMediaItemList.get(mCurrentIndex);"
        errorLine2="                    ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="436"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `setDataSource` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    setDataSource();"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="439"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRepeatState` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                } else if (mRepeatState == MEDIA_ACTION_REPEAT_ONE) {"
        errorLine2="                           ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="440"
            column="28"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlayer` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mPlayer.start();"
        errorLine2="                    ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="444"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="445"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="445"
            column="52"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                } else if (mCurrentIndex &lt; mMediaItemList.size() - 1) {"
        errorLine2="                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="447"
            column="28"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mShuffleMode` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    if (mShuffleMode == PlaybackStateCompat.SHUFFLE_MODE_NONE) {"
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="448"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex++;"
        errorLine2="                        ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="449"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex = generateMediaItemIndex();"
        errorLine2="                        ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="451"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `generateMediaItemIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mCurrentIndex = generateMediaItemIndex();"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="451"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentIndex` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mCurrentMediaItem = mMediaItemList.get(mCurrentIndex);"
        errorLine2="                                                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="453"
            column="60"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mCurrentMediaItem` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mCurrentMediaItem = mMediaItemList.get(mCurrentIndex);"
        errorLine2="                    ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="453"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `setDataSource` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    setDataSource();"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="456"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="461"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                    mMediaSession.setPlaybackState(createPlaybackStateBuilder("
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="461"
            column="52"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mBufferedProgress` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mBufferedProgress = (long) getDuration() * percent / 100;"
        errorLine2="                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="472"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `getDuration` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mBufferedProgress = (long) getDuration() * percent / 100;"
        errorLine2="                                                   ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="472"
            column="52"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `createPlaybackStateBuilder` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        PlaybackStateCompat.Builder builder = createPlaybackStateBuilder("
        errorLine2="                                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="473"
            column="63"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mBufferedProgress` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        builder.setBufferedPosition(mBufferedProgress);"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="475"
            column="53"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="                        mMediaSession.setPlaybackState(builder.build());"
        errorLine2="                        ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="476"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `play` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            play();"
        errorLine2="            ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="518"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `pause` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            pause();"
        errorLine2="            ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="523"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `next` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            next();"
        errorLine2="            ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="528"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `previous` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            previous();"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="533"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `stop` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            stop();"
        errorLine2="            ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="538"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `seekTo` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            seekTo((int) pos);"
        errorLine2="            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="545"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `fastForward` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            fastForward();"
        errorLine2="            ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="550"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `rewind` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            rewind();"
        errorLine2="            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="555"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `setShuffleMode` of class `MediaSessionService` requires synthetic accessor"
        errorLine1="            setShuffleMode(shuffleMode);"
        errorLine2="            ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="565"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService = binder.getService();"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="188"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService.registerCallback(MusicPlayerFragment.this);"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="191"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService.setMediaList(mSongMetaDataList, false);"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="197"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mSongMetaDataList` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService.setMediaList(mSongMetaDataList, false);"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="197"
            column="43"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService.setFastForwardSpeedFactors(fastForwardSpeed);"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="200"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService.setRewindSpeedFactors(rewindSpeed);"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="201"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mMediaSession = mPlaybackService.getMediaSession();"
        errorLine2="            ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="204"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mMediaSession = mPlaybackService.getMediaSession();"
        errorLine2="                            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="204"
            column="29"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mController` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mController = new MediaControllerCompat(MusicPlayerFragment.this.getActivity(),"
        errorLine2="            ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="206"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaSession` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="                    mMediaSession);"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="207"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mAdapter` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mAdapter = new MediaControllerAdapter(mController);"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="208"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mController` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mAdapter = new MediaControllerAdapter(mController);"
        errorLine2="                                                  ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="208"
            column="51"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` constructor of class `PlaybackBannerMusicPlayerControlGlue` requires synthetic accessor"
        errorLine1="            mGlue = new PlaybackBannerMusicPlayerControlGlue&lt;>(getActivity(), fastForwardSpeed,"
        errorLine2="                    ^">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="209"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mGlue` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mGlue = new PlaybackBannerMusicPlayerControlGlue&lt;>(getActivity(), fastForwardSpeed,"
        errorLine2="            ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="209"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mAdapter` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="                    mAdapter);"
        errorLine2="                    ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="211"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mGlue` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mGlue.setHost(new PlaybackFragmentGlueHost(MusicPlayerFragment.this));"
        errorLine2="            ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="215"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPlaybackService` of class `MusicPlayerFragment` requires synthetic accessor"
        errorLine1="            mPlaybackService = null;"
        errorLine2="            ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="220"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = (DetailsOverviewRow) mRowsAdapter.get(0);"
        errorLine2="                                                              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="159"
            column="63"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="164"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="169"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="172"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                            mDetailsBackground.switchToVideo();"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="175"
            column="29"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="185"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="188"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="189"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.switchToVideo();"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="191"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="197"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.switchToVideo();"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="198"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="293"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        mPhotoItem.getImageResourceId(), context.getTheme()));"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="295"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionRent` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_RENT, mActionRent);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="299"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="300"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="303"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="306"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="307"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                mRowsAdapter.add(0, dor);"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="315"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_SHARED_ELEMENT_TRANSITION` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                if (TEST_SHARED_ELEMENT_TRANSITION) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="317"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    if (mHelper != null &amp;&amp; !mHelper.getAutoStartSharedElementTransition()) {"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="318"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    if (mHelper != null &amp;&amp; !mHelper.getAutoStartSharedElementTransition()) {"
        errorLine2="                                            ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="318"
            column="45"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        mHelper.startPostponedEnterTransition();"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="319"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                    mRowsAdapter.add(new ListRow(header, listRowAdapter));"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="338"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.setCoverBitmap(bitmap);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="354"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                DetailsOverviewRow dor = (DetailsOverviewRow) mRowsAdapter.get(0);"
        errorLine2="                                                              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="162"
            column="63"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="167"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="172"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="175"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                            mDetailsBackground.switchToVideo();"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="178"
            column="29"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    actions.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                             ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="188"
            column="46"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    dor.setItem(getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="191"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="192"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.switchToVideo();"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="194"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_BACKGROUND_PLAYER` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    if (TEST_BACKGROUND_PLAYER) {"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="200"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.switchToVideo();"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="201"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        getDisplayTitle(mPhotoItem.getTitle()));"
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="296"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mPhotoItem` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mPhotoItem.getImageResourceId(), context.getTheme()));"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="298"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionRent` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_RENT, mActionRent);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="302"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="303"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="306"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionPlay` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_PLAY, mActionPlay);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="309"
            column="50"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mActionBuy` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        adapter.set(ACTION_BUY, mActionBuy);"
        errorLine2="                                                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="310"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                mRowsAdapter.add(0, dor);"
        errorLine2="                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="318"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `TEST_SHARED_ELEMENT_TRANSITION` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                if (TEST_SHARED_ELEMENT_TRANSITION) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="320"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    if (mHelper != null &amp;&amp; !mHelper.getAutoStartSharedElementTransition()) {"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="321"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    if (mHelper != null &amp;&amp; !mHelper.getAutoStartSharedElementTransition()) {"
        errorLine2="                                            ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="321"
            column="45"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHelper` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mHelper.startPostponedEnterTransition();"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="322"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRowsAdapter` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                    mRowsAdapter.add(new ListRow(header, listRowAdapter));"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="341"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mDetailsBackground` of class `NewDetailsSupportFragment` requires synthetic accessor"
        errorLine1="                        mDetailsBackground.setCoverBitmap(bitmap);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="357"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                ((AnimationDrawable) mContentAnimationView.getDrawable()).start();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="111"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `CONTENT_BACKGROUNDS` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[newPage]);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="127"
            column="57"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentBackgroundView` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[newPage]);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="127"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `CONTENT_ANIMATIONS` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[newPage]);"
        errorLine2="                                                       ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="128"
            column="56"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[newPage]);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="128"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoFragment` requires synthetic accessor"
        errorLine1="                ((AnimationDrawable) mContentAnimationView.getDrawable()).start();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="135"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                ((AnimationDrawable) mContentAnimationView.getDrawable()).start();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="114"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `CONTENT_BACKGROUNDS` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[newPage]);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="130"
            column="57"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentBackgroundView` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[newPage]);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="130"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `CONTENT_ANIMATIONS` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[newPage]);"
        errorLine2="                                                       ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="131"
            column="56"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[newPage]);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="131"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mContentAnimationView` of class `OnboardingDemoSupportFragment` requires synthetic accessor"
        errorLine1="                ((AnimationDrawable) mContentAnimationView.getDrawable()).start();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="138"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sData` of class `PhotoDatabase` requires synthetic accessor"
        errorLine1="                            for (int i = 0; i &lt; sData.length; ++i) {"
        errorLine2="                                                ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="48"
            column="49"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `sData` of class `PhotoDatabase` requires synthetic accessor"
        errorLine1="                                PhotoItem dataItem = sData[i];"
        errorLine2="                                                     ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="49"
            column="54"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` constructor of class `PhotoItem` requires synthetic accessor"
        errorLine1="            return new PhotoItem(in);"
        errorLine2="                   ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="84"
            column="20"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHandler` of class `PlaybackControlGlue` requires synthetic accessor"
        errorLine1="            mHandler.postDelayed(this, getUpdatePeriod());"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackControlGlue.java"
            line="59"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRepeatAction` of class `PlaybackControlGlue` requires synthetic accessor"
        errorLine1="                if (mRepeatAction.getIndex() == PlaybackControlsRow.RepeatAction.INDEX_NONE) {"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackControlGlue.java"
            line="221"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mStartPosition` of class `PlaybackControlGlue` requires synthetic accessor"
        errorLine1="                mStartPosition = 0;"
        errorLine2="                ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackControlGlue.java"
            line="226"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `MediaSessionCallback` requires synthetic accessor"
        errorLine1="        mMediaSessionCompat.setCallback(new MediaSessionCallback());"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlGlueSample.java"
            line="147"
            column="41"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mRepeatAction` of class `PlaybackTransportControlGlueSample` requires synthetic accessor"
        errorLine1="                if (mRepeatAction.getIndex() != PlaybackControlsRow.RepeatAction.INDEX_NONE) {"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlGlueSample.java"
            line="212"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mHandler` of class `PlayerAdapter` requires synthetic accessor"
        errorLine1="            mHandler.postDelayed(this, 16);"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlayerAdapter.java"
            line="34"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mStartPosition` of class `PlayerAdapter` requires synthetic accessor"
        errorLine1="                mStartPosition = 0;"
        errorLine2="                ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlayerAdapter.java"
            line="78"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mIsPlaying` of class `PlayerAdapter` requires synthetic accessor"
        errorLine1="                mIsPlaying = false;"
        errorLine2="                ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlayerAdapter.java"
            line="79"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsFragment.java"
            line="53"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mTitleHelper` of class `RowsFragment` requires synthetic accessor"
        errorLine1="                if (mTitleHelper != null) {"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsFragment.java"
            line="59"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mTitleHelper` of class `RowsFragment` requires synthetic accessor"
        errorLine1="                    mTitleHelper.showTitle(getAdapter() == null || getAdapter().size() == 0 ||"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsFragment.java"
            line="60"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="59"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mTitleHelper` of class `RowsSupportFragment` requires synthetic accessor"
        errorLine1="                if (mTitleHelper != null) {"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="65"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mTitleHelper` of class `RowsSupportFragment` requires synthetic accessor"
        errorLine1="                    mTitleHelper.showTitle(getAdapter() == null || getAdapter().size() == 0 ||"
        errorLine2="                    ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="66"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.setSubtitle(&quot;Leanback artist Changed!&quot;);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="119"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.setTitle(&quot;Leanback team at work&quot;);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="120"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.getPlayerAdapter().setDataSource(Uri.parse(uriPath));"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="123"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    loadSeekData(mMediaPlayerGlue);"
        errorLine2="                                 ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="124"
            column="34"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    playWhenReady(mMediaPlayerGlue);"
        errorLine2="                                  ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="125"
            column="35"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.removePlayerCallback(this);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="127"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.setSubtitle(&quot;Leanback artist Changed!&quot;);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="122"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.setTitle(&quot;Leanback team at work&quot;);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="123"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.getPlayerAdapter().setDataSource(Uri.parse(uriPath));"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="126"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    loadSeekData(mMediaPlayerGlue);"
        errorLine2="                                 ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="127"
            column="34"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    playWhenReady(mMediaPlayerGlue);"
        errorLine2="                                  ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="128"
            column="35"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mMediaPlayerGlue` of class `SampleVideoSupportFragment` requires synthetic accessor"
        errorLine1="                    mMediaPlayerGlue.removePlayerCallback(this);"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="130"
            column="21"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `DEBUG` of class `SearchActivity` requires synthetic accessor"
        errorLine1="                    if (DEBUG) Log.v(TAG, &quot;recognizeSpeech&quot;);"
        errorLine2="                        ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchActivity.java"
            line="49"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mFragment` of class `SearchActivity` requires synthetic accessor"
        errorLine1="                    startActivityForResult(mFragment.getRecognizerIntent(), REQUEST_SPEECH);"
        errorLine2="                                           ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchActivity.java"
            line="50"
            column="44"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="98"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadRows` of class `SearchFragment` requires synthetic accessor"
        errorLine1="            loadRows();"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="161"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `DEBUG` of class `SearchSupportActivity` requires synthetic accessor"
        errorLine1="                    if (DEBUG) Log.v(TAG, &quot;recognizeSpeech&quot;);"
        errorLine2="                        ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportActivity.java"
            line="52"
            column="25"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mFragment` of class `SearchSupportActivity` requires synthetic accessor"
        errorLine1="                    startActivityForResult(mFragment.getRecognizerIntent(), REQUEST_SPEECH);"
        errorLine2="                                           ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportActivity.java"
            line="53"
            column="44"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ItemViewClickedListener` requires synthetic accessor"
        errorLine1="        setOnItemViewClickedListener(new ItemViewClickedListener());"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="101"
            column="38"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadRows` of class `SearchSupportFragment` requires synthetic accessor"
        errorLine1="            loadRows();"
        errorLine2="            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="164"
            column="13"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadData` of class `VerticalGridFragment` requires synthetic accessor"
        errorLine1="                loadData();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="70"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mAdapter` of class `VerticalGridFragment` requires synthetic accessor"
        errorLine1="                mAdapter.callNotifyChanged();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="103"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `loadData` of class `VerticalGridSupportFragment` requires synthetic accessor"
        errorLine1="                loadData();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="73"
            column="17"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` field `mAdapter` of class `VerticalGridSupportFragment` requires synthetic accessor"
        errorLine1="                mAdapter.callNotifyChanged();"
        errorLine2="                ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="106"
            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="        public Bitmap getCache(Object token) {"
        errorLine2="               ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="61"
            column="16"/>
    </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 Bitmap getCache(Object token) {"
        errorLine2="                               ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="61"
            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="        public void putCache(Object token, Bitmap bitmap) {"
        errorLine2="                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="72"
            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="        public void putCache(Object token, Bitmap bitmap) {"
        errorLine2="                                           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="72"
            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 static BitmapCache getInstance() {"
        errorLine2="                      ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="81"
            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 abstract void onBitmapLoaded(Bitmap bitmap);"
        errorLine2="                                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="93"
            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="    public BackgroundHelper(Activity activity) {"
        errorLine2="                            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="105"
            column="29"/>
    </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 attachToView(View backgroundView) {"
        errorLine2="                             ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="215"
            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="    public void setBackground(Object imageToken) {"
        errorLine2="                              ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="228"
            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 setDrawable(Drawable drawable) {"
        errorLine2="                            ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="265"
            column="29"/>
    </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 loadBitmap(Object imageToken, BitmapLoadCallback callback) {"
        errorLine2="                           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="277"
            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 loadBitmap(Object imageToken, BitmapLoadCallback callback) {"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BackgroundHelper.java"
            line="277"
            column="47"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseActivity.java"
            line="22"
            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 void onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationActivity.java"
            line="23"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseAnimationFragment.java"
            line="58"
            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 void onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorActivity.java"
            line="31"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorActivity.java"
            line="55"
            column="16"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorActivity.java"
            line="55"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                          ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorActivity.java"
            line="55"
            column="59"/>
    </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="                    Bundle savedInstanceState) {"
        errorLine2="                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorActivity.java"
            line="56"
            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="    public void onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorSupportActivity.java"
            line="35"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorSupportActivity.java"
            line="59"
            column="16"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorSupportActivity.java"
            line="59"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                          ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorSupportActivity.java"
            line="59"
            column="59"/>
    </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="                    Bundle savedInstanceState) {"
        errorLine2="                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseErrorSupportActivity.java"
            line="60"
            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="    public void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="65"
            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 View onCreateView("
        errorLine2="           ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="139"
            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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="            ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="140"
            column="13"/>
    </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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                     ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="140"
            column="38"/>
    </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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                                          ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="140"
            column="59"/>
    </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 Fragment createFragment(Object rowObj) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="258"
            column="16"/>
    </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 Fragment createFragment(Object rowObj) {"
        errorLine2="                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="258"
            column="40"/>
    </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 PageFragmentAdapterImpl(SampleFragment fragment) {"
        errorLine2="                                       ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="375"
            column="40"/>
    </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 View onCreateView("
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="399"
            column="16"/>
    </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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                      ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="400"
            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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                               ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="400"
            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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                                                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="400"
            column="69"/>
    </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 onViewCreated(View view, Bundle savedInstanceState) {"
        errorLine2="                                  ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="414"
            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="        public void onViewCreated(View view, Bundle savedInstanceState) {"
        errorLine2="                                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="414"
            column="46"/>
    </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 MainFragmentAdapter getMainFragmentAdapter() {"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseFragment.java"
            line="421"
            column="16"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportActivity.java"
            line="26"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportAppCompatActivity.java"
            line="29"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="68"
            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 View onCreateView("
        errorLine2="           ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="142"
            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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="            ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="143"
            column="13"/>
    </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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                     ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="143"
            column="38"/>
    </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="            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                                          ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="143"
            column="59"/>
    </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 Fragment createFragment(Object rowObj) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="261"
            column="16"/>
    </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 Fragment createFragment(Object rowObj) {"
        errorLine2="                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="261"
            column="40"/>
    </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 PageFragmentAdapterImpl(SampleFragment fragment) {"
        errorLine2="                                       ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="378"
            column="40"/>
    </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 View onCreateView("
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="402"
            column="16"/>
    </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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                      ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="403"
            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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                               ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="403"
            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="                final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {"
        errorLine2="                                                                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="403"
            column="69"/>
    </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 onViewCreated(View view, Bundle savedInstanceState) {"
        errorLine2="                                  ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="417"
            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="        public void onViewCreated(View view, Bundle savedInstanceState) {"
        errorLine2="                                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="417"
            column="46"/>
    </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 MainFragmentAdapter getMainFragmentAdapter() {"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/BrowseSupportFragment.java"
            line="424"
            column="16"/>
    </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 int getRowHeight(Context context) {"
        errorLine2="                            ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="73"
            column="29"/>
    </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 int getExpandedRowHeight(Context context) {"
        errorLine2="                                    ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="78"
            column="37"/>
    </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 ViewHolder onCreateViewHolder(ViewGroup parent) {"
        errorLine2="           ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="84"
            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 ViewHolder onCreateViewHolder(ViewGroup parent) {"
        errorLine2="                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="84"
            column="42"/>
    </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 onBindViewHolder(ViewHolder viewHolder, Object item) {"
        errorLine2="                                 ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="111"
            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 onBindViewHolder(ViewHolder viewHolder, Object item) {"
        errorLine2="                                                        ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="111"
            column="57"/>
    </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 onBindViewHolder(ViewHolder viewHolder, Object item, List&lt;Object> payloads) {"
        errorLine2="                                 ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="125"
            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 onBindViewHolder(ViewHolder viewHolder, Object item, List&lt;Object> payloads) {"
        errorLine2="                                                        ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="125"
            column="57"/>
    </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 onBindViewHolder(ViewHolder viewHolder, Object item, List&lt;Object> payloads) {"
        errorLine2="                                                                     ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="125"
            column="70"/>
    </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 onUnbindViewHolder(ViewHolder viewHolder) {"
        errorLine2="                                   ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CardPresenter.java"
            line="149"
            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="    public CustomTitleView(Context context) {"
        errorLine2="                           ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="73"
            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 CustomTitleView(Context context, AttributeSet attrs) {"
        errorLine2="                           ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="77"
            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 CustomTitleView(Context context, AttributeSet attrs) {"
        errorLine2="                                            ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="77"
            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="    public CustomTitleView(Context context, AttributeSet attrs, int defStyleAttr) {"
        errorLine2="                           ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="81"
            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 CustomTitleView(Context context, AttributeSet attrs, int defStyleAttr) {"
        errorLine2="                                            ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="81"
            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="    public TitleViewAdapter getTitleViewAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/CustomTitleView.java"
            line="86"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DatePickerActivity.java"
            line="33"
            column="29"/>
    </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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DatePickerAppCompatActivity.java"
            line="33"
            column="29"/>
    </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 onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsActivity.java"
            line="35"
            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="    protected void onBindDescription(ViewHolder vh, Object item) {"
        errorLine2="                                     ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsDescriptionPresenter.java"
            line="21"
            column="38"/>
    </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="    protected void onBindDescription(ViewHolder vh, Object item) {"
        errorLine2="                                                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsDescriptionPresenter.java"
            line="21"
            column="53"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="68"
            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 void onSaveInstanceState(Bundle outState) {"
        errorLine2="                                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="171"
            column="37"/>
    </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 setItem(PhotoItem photoItem) {"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsFragment.java"
            line="176"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="48"
            column="29"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="70"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="70"
            column="42"/>
    </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 GuidanceStylist onCreateGuidanceStylist() {"
        errorLine2="               ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="79"
            column="16"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="89"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="89"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsPresenterSelectionActivity.java"
            line="107"
            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 onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportActivity.java"
            line="39"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="71"
            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 void onSaveInstanceState(Bundle outState) {"
        errorLine2="                                    ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="174"
            column="37"/>
    </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 setItem(PhotoItem photoItem) {"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/DetailsSupportFragment.java"
            line="179"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/ErrorFragment.java"
            line="28"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/ErrorSupportFragment.java"
            line="31"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="73"
            column="29"/>
    </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 onConfigurationChanged(Configuration newConfig) {"
        errorLine2="                                       ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="83"
            column="40"/>
    </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="    protected void onSaveInstanceState(Bundle outState) {"
        errorLine2="                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="89"
            column="40"/>
    </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="    protected void onRestoreInstanceState(Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="95"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="196"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="196"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="207"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="207"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="224"
            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 onCreate(Bundle savedInstance) {"
        errorLine2="                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="269"
            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="        public Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="279"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="279"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="290"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="290"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="298"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="298"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="306"
            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 long onGuidedActionEditedAndProceed(GuidedAction action) {"
        errorLine2="                                                   ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="327"
            column="52"/>
    </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 GuidedActionsStylist onCreateActionsStylist() {"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="391"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="407"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="407"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="418"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="418"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="428"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="428"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="437"
            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 long onGuidedActionEditedAndProceed(GuidedAction action) {"
        errorLine2="                                                   ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="459"
            column="52"/>
    </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 boolean onSubGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="479"
            column="49"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="502"
            column="16"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="502"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                          ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="502"
            column="59"/>
    </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="                Bundle savedInstanceState) {"
        errorLine2="                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="503"
            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="        public Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="535"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="535"
            column="42"/>
    </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 GuidanceStylist onCreateGuidanceStylist() {"
        errorLine2="               ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="546"
            column="16"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="556"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="556"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="583"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="583"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="590"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="618"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="618"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="629"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="629"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepActivity.java"
            line="638"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="42"
            column="29"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="52"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="52"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="63"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="63"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="91"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="109"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="109"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="120"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="120"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="133"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="133"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepHalfScreenActivity.java"
            line="141"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="76"
            column="29"/>
    </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 onConfigurationChanged(Configuration newConfig) {"
        errorLine2="                                       ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="86"
            column="40"/>
    </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="    protected void onSaveInstanceState(Bundle outState) {"
        errorLine2="                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="92"
            column="40"/>
    </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="    protected void onRestoreInstanceState(Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="98"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="199"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="199"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="210"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="210"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="227"
            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 onCreate(Bundle savedInstance) {"
        errorLine2="                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="272"
            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="        public Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="282"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="282"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="293"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="293"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="301"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="301"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="309"
            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 long onGuidedActionEditedAndProceed(GuidedAction action) {"
        errorLine2="                                                   ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="330"
            column="52"/>
    </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 GuidedActionsStylist onCreateActionsStylist() {"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="394"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="410"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="410"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="421"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="421"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="431"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="431"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="440"
            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 long onGuidedActionEditedAndProceed(GuidedAction action) {"
        errorLine2="                                                   ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="462"
            column="52"/>
    </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 boolean onSubGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                                ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="482"
            column="49"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="               ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="505"
            column="16"/>
    </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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="505"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                          ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="505"
            column="59"/>
    </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="                Bundle savedInstanceState) {"
        errorLine2="                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="506"
            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="        public Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="538"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="538"
            column="42"/>
    </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 GuidanceStylist onCreateGuidanceStylist() {"
        errorLine2="               ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="549"
            column="16"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="559"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="559"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="586"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="586"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="593"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="621"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="621"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="632"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="632"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportActivity.java"
            line="641"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="45"
            column="29"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="55"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="55"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="66"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="66"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="94"
            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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="112"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="112"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="123"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="123"
            column="65"/>
    </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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="136"
            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 onCreateButtonActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                      ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="136"
            column="71"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/GuidedStepSupportHalfScreenActivity.java"
            line="144"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="74"
            column="29"/>
    </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="    protected void onNewIntent(Intent intent) {"
        errorLine2="                               ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/HorizontalGridTestActivity.java"
            line="88"
            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="    public LiveDataListRow(HeaderItem header,"
        errorLine2="                           ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/LiveDataListRow.java"
            line="24"
            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="            ObjectAdapter adapter) {"
        errorLine2="            ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/LiveDataListRow.java"
            line="25"
            column="13"/>
    </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 LiveDataListRow(long id, HeaderItem header, ObjectAdapter adapter) {"
        errorLine2="                                    ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/LiveDataListRow.java"
            line="28"
            column="37"/>
    </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 LiveDataListRow(long id, HeaderItem header, ObjectAdapter adapter) {"
        errorLine2="                                                       ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/LiveDataListRow.java"
            line="28"
            column="56"/>
    </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 LiveDataListRow(ObjectAdapter adapter) {"
        errorLine2="                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/LiveDataListRow.java"
            line="31"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="39"
            column="29"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="               ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="48"
            column="16"/>
    </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 Guidance onCreateGuidance(Bundle savedInstanceState) {"
        errorLine2="                                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="48"
            column="42"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="59"
            column="37"/>
    </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 onCreateActions(List&lt;GuidedAction> actions, Bundle savedInstanceState) {"
        errorLine2="                                                                ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="59"
            column="65"/>
    </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 onGuidedActionClicked(GuidedAction action) {"
        errorLine2="                                          ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MainActivity.java"
            line="190"
            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 MediaSessionCompat getMediaSession() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="202"
            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 IBinder onBind(Intent intent) {"
        errorLine2="                          ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="208"
            column="27"/>
    </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 setMediaList(List&lt;MusicItem> mediaItemList, boolean isQueue) {"
        errorLine2="                             ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="261"
            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="    public void setFastForwardSpeedFactors(int[] fastForwardSpeeds) {"
        errorLine2="                                           ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="291"
            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 void setRewindSpeedFactors(int[] rewindSpeeds) {"
        errorLine2="                                      ~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="307"
            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="    public void registerCallback(MediaPlayerListener listener) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MediaSessionService.java"
            line="488"
            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="    @Override public void onCreate(Bundle savedInstanceState) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicExampleActivity.java"
            line="26"
            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="    public Uri getMediaSourceUri(Context context) {"
        errorLine2="           ~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="56"
            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 Uri getMediaSourceUri(Context context) {"
        errorLine2="                                 ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="56"
            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 String getMediaTitle() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="66"
            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 String getMediaDescription() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="75"
            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 int getMediaAlbumArtResId(Context context) {"
        errorLine2="                                     ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="85"
            column="38"/>
    </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 static Uri getResourceUri(Context context, int resID) {"
        errorLine2="                  ~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="97"
            column="19"/>
    </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 static Uri getResourceUri(Context context, int resID) {"
        errorLine2="                                     ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicItem.java"
            line="97"
            column="38"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/MusicPlayerFragment.java"
            line="225"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="115"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="           ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="250"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                             ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="250"
            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="    public View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                      ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="250"
            column="55"/>
    </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="            Bundle savedInstanceState) {"
        errorLine2="            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="251"
            column="13"/>
    </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 setItem(PhotoItem photoItem) {"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsFragment.java"
            line="260"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="118"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="           ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="253"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                             ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="253"
            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="    public View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                      ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="253"
            column="55"/>
    </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="            Bundle savedInstanceState) {"
        errorLine2="            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="254"
            column="13"/>
    </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 setItem(PhotoItem photoItem) {"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/NewDetailsSupportFragment.java"
            line="263"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingActivity.java"
            line="21"
            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 void onAttach(android.app.Activity activity) {"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="57"
            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="    protected CharSequence getPageTitle(int i) {"
        errorLine2="              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="70"
            column="15"/>
    </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="    protected CharSequence getPageDescription(int i) {"
        errorLine2="              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="75"
            column="15"/>
    </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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="80"
            column="15"/>
    </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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                          ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="80"
            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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="80"
            column="74"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="86"
            column="15"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                       ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="86"
            column="40"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                      ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="86"
            column="71"/>
    </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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="94"
            column="15"/>
    </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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                          ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="94"
            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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="94"
            column="74"/>
    </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="    protected Animator onCreateEnterAnimation() {"
        errorLine2="              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoFragment.java"
            line="99"
            column="15"/>
    </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 onAttach(android.app.Activity activity) {"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="60"
            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="    protected CharSequence getPageTitle(int i) {"
        errorLine2="              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="73"
            column="15"/>
    </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="    protected CharSequence getPageDescription(int i) {"
        errorLine2="              ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="78"
            column="15"/>
    </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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="83"
            column="15"/>
    </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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                          ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="83"
            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="    protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="83"
            column="74"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="89"
            column="15"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                       ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="89"
            column="40"/>
    </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="    protected View onCreateContentView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                      ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="89"
            column="71"/>
    </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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="              ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="97"
            column="15"/>
    </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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                          ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="97"
            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="    protected View onCreateForegroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) {"
        errorLine2="                                                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="97"
            column="74"/>
    </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="    protected Animator onCreateEnterAnimation() {"
        errorLine2="              ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingDemoSupportFragment.java"
            line="102"
            column="15"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingSupportActivity.java"
            line="25"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/OnboardingSupportAppCompatActivity.java"
            line="28"
            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="    protected LiveDataRowPresenterViewHolder createRowViewHolder(ViewGroup parent) {"
        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagedRowPresenter.java"
            line="39"
            column="15"/>
    </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="    protected LiveDataRowPresenterViewHolder createRowViewHolder(ViewGroup parent) {"
        errorLine2="                                                                 ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagedRowPresenter.java"
            line="39"
            column="66"/>
    </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="    protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {"
        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagedRowPresenter.java"
            line="48"
            column="40"/>
    </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="    protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {"
        errorLine2="                                                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagedRowPresenter.java"
            line="48"
            column="72"/>
    </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 PagerAdapter(FragmentManager fm, int numOfTabs) {"
        errorLine2="                        ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagerAdapter.java"
            line="30"
            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 CharSequence getPageTitle(int position) {"
        errorLine2="           ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PagerAdapter.java"
            line="47"
            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 String getTitle() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/Photo.java"
            line="42"
            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="    PagingSource&lt;Integer, Photo> fetchPhotos();"
        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDao.java"
            line="32"
            column="5"/>
    </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 static synchronized PhotoDatabase getInstance("
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="40"
            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="            Context context) {"
        errorLine2="            ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="41"
            column="13"/>
    </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 PhotoDao photoDao();"
        errorLine2="                    ~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/room/PhotoDatabase.java"
            line="85"
            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="    public PhotoItem(String title, int imageResourceId) {"
        errorLine2="                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="30"
            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 PhotoItem(String title, int imageResourceId, int id) {"
        errorLine2="                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="34"
            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 PhotoItem(String title, String content, int imageResourceId) {"
        errorLine2="                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="39"
            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 PhotoItem(String title, String content, int imageResourceId) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="39"
            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="    public PhotoItem(String title, String content, int imageResourceId, int id) {"
        errorLine2="                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="47"
            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 PhotoItem(String title, String content, int imageResourceId, int id) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="47"
            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="    public String getTitle() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="56"
            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 String getContent() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="60"
            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 void writeToParcel(Parcel dest, int flags) {"
        errorLine2="                              ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoItem.java"
            line="75"
            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 PhotoViewModel(Application application) {"
        errorLine2="                          ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoViewModel.java"
            line="44"
            column="27"/>
    </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 LiveData&lt;PagingData&lt;PhotoItem>> getPagingDataLiveData() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PhotoViewModel.java"
            line="64"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PinPickerActivity.java"
            line="30"
            column="29"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackActivity.java"
            line="33"
            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 void registerPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackActivity.java"
            line="48"
            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 unregisterPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackActivity.java"
            line="55"
            column="52"/>
    </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 SparseArrayObjectAdapter getAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackFragment.java"
            line="61"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackFragment.java"
            line="66"
            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="    protected boolean isCancelled(Object task) {"
        errorLine2="                                  ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="48"
            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="    protected abstract Bitmap doInBackground(Object task, int index, long position);"
        errorLine2="                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="52"
            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="    protected abstract Bitmap doInBackground(Object task, int index, long position);"
        errorLine2="                                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="52"
            column="46"/>
    </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 setSeekPositions(long[] positions) {"
        errorLine2="                                 ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="93"
            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 long[] getSeekPositions() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="98"
            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 void getThumbnail(int index, ResultCallback callback) {"
        errorLine2="                                        ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java"
            line="104"
            column="41"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportActivity.java"
            line="37"
            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 void registerPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportActivity.java"
            line="52"
            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 unregisterPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportActivity.java"
            line="59"
            column="52"/>
    </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 SparseArrayObjectAdapter getAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportFragment.java"
            line="64"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackSupportFragment.java"
            line="69"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlActivity.java"
            line="33"
            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 void registerPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlActivity.java"
            line="48"
            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 unregisterPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlActivity.java"
            line="55"
            column="52"/>
    </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 SparseArrayObjectAdapter getAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlFragment.java"
            line="56"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlFragment.java"
            line="61"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportActivity.java"
            line="37"
            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 void registerPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportActivity.java"
            line="52"
            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 unregisterPictureInPictureListener(PictureInPictureListener listener) {"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportActivity.java"
            line="59"
            column="52"/>
    </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 SparseArrayObjectAdapter getAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportFragment.java"
            line="59"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/PlaybackTransportControlSupportFragment.java"
            line="64"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsActivity.java"
            line="31"
            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 void setTitleHelper(TitleHelper titleHelper) {"
        errorLine2="                               ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsFragment.java"
            line="43"
            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="    public void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsFragment.java"
            line="48"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportActivity.java"
            line="34"
            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 void setTitleHelper(TitleHelper titleHelper) {"
        errorLine2="                               ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="50"
            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="    public void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/RowsSupportFragment.java"
            line="55"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoFragment.java"
            line="100"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SampleVideoSupportFragment.java"
            line="103"
            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 void onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchActivity.java"
            line="38"
            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="    protected void onActivityResult(int requestCode, int resultCode, Intent data) {"
        errorLine2="                                                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchActivity.java"
            line="58"
            column="70"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="88"
            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 ObjectAdapter getResultsAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="102"
            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 boolean onQueryTextChange(String newQuery) {"
        errorLine2="                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="107"
            column="38"/>
    </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 boolean onQueryTextSubmit(String query) {"
        errorLine2="                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchFragment.java"
            line="115"
            column="38"/>
    </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 onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportActivity.java"
            line="41"
            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="    protected void onActivityResult(int requestCode, int resultCode, Intent data) {"
        errorLine2="                                                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportActivity.java"
            line="61"
            column="70"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="91"
            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 ObjectAdapter getResultsAdapter() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="105"
            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 boolean onQueryTextChange(String newQuery) {"
        errorLine2="                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="110"
            column="38"/>
    </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 boolean onQueryTextSubmit(String query) {"
        errorLine2="                                     ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SearchSupportFragment.java"
            line="118"
            column="38"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsActivity.java"
            line="27"
            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 boolean onPreferenceStartFragment(PreferenceFragmentCompat preferenceFragment,"
        errorLine2="                                             ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="44"
            column="46"/>
    </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="                                             Preference preference) {"
        errorLine2="                                             ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="45"
            column="46"/>
    </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 boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragment,"
        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="50"
            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="                                           PreferenceScreen preferenceScreen) {"
        errorLine2="                                           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="51"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                             ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="70"
            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="        public void onCreatePreferences(Bundle bundle, String rootKey) {"
        errorLine2="                                        ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="75"
            column="41"/>
    </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 onCreatePreferences(Bundle bundle, String rootKey) {"
        errorLine2="                                                       ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="75"
            column="56"/>
    </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 boolean onPreferenceTreeClick(Preference preference) {"
        errorLine2="                                             ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/SettingsFragment.java"
            line="80"
            column="46"/>
    </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 ViewHolder onCreateViewHolder(ViewGroup parent) {"
        errorLine2="           ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/StringPresenter.java"
            line="28"
            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 ViewHolder onCreateViewHolder(ViewGroup parent) {"
        errorLine2="                                         ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/StringPresenter.java"
            line="28"
            column="42"/>
    </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 onBindViewHolder(ViewHolder viewHolder, Object item) {"
        errorLine2="                                 ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/StringPresenter.java"
            line="40"
            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 onBindViewHolder(ViewHolder viewHolder, Object item) {"
        errorLine2="                                                        ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/StringPresenter.java"
            line="40"
            column="57"/>
    </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 onUnbindViewHolder(ViewHolder viewHolder) {"
        errorLine2="                                   ~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/StringPresenter.java"
            line="46"
            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="    public View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="           ~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TabFragment.java"
            line="37"
            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 View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                             ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TabFragment.java"
            line="37"
            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="    public View onCreateView(LayoutInflater inflater, ViewGroup container,"
        errorLine2="                                                      ~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TabFragment.java"
            line="37"
            column="55"/>
    </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="            Bundle savedInstanceState) {"
        errorLine2="            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TabFragment.java"
            line="38"
            column="13"/>
    </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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TabLayoutActivity.java"
            line="32"
            column="29"/>
    </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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/TimePickerActivity.java"
            line="34"
            column="29"/>
    </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 onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridActivity.java"
            line="23"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridFragment.java"
            line="50"
            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 void onCreate(Bundle savedInstanceState)"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportActivity.java"
            line="27"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportAppCompatActivity.java"
            line="29"
            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 void onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VerticalGridSupportFragment.java"
            line="53"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoActivity.java"
            line="25"
            column="29"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoActivityWithDetailedCard.java"
            line="37"
            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="    protected void onNewIntent(Intent intent) {"
        errorLine2="                               ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoActivityWithDetailedCard.java"
            line="50"
            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="    public static boolean supportsPictureInPicture(Context context) {"
        errorLine2="                                                   ~~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoActivityWithDetailedCard.java"
            line="65"
            column="52"/>
    </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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoConsumptionWithDetailCardFragment.java"
            line="66"
            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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoSupportActivity.java"
            line="29"
            column="29"/>
    </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="    protected void onCreate(Bundle savedInstanceState) {"
        errorLine2="                            ~~~~~~">
        <location
            file="src/main/java/com/example/android/leanback/VideoSupportAppCompatActivity.java"
            line="29"
            column="29"/>
    </issue>

</issues>
