<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.4.0-alpha12" type="baseline" client="gradle" dependencies="false" name="AGP (8.4.0-alpha12)" variant="all" version="8.4.0-alpha12">

    <issue
        id="RestrictedApiAndroidX"
        message="RouteInfo.isDefaultOrBluetooth can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="            if (!routeInfo.isDefaultOrBluetooth()) {"
        errorLine2="                           ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AndroidXMediaRouterSystemRoutesSource.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="RouteInfo.DEVICE_TYPE_UNKNOWN can only be accessed from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="        UNKNOWN(MediaRouter.RouteInfo.DEVICE_TYPE_UNKNOWN);"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/data/RouteItem.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteProvider.onCreateRouteController can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="    public RouteController onCreateRouteController(@NonNull String routeId,"
        errorLine2="                           ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="        if (initialRoute.getGroupMemberIds().isEmpty()) {"
        errorLine2="                         ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="            memberIds.addAll(initialRoute.getGroupMemberIds());"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="Builder.addGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="                            .addGroupMemberIds(memberIds);"
        errorLine2="                             ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="            for (String memberRouteId : routeDescriptor.getGroupMemberIds()) {"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="Builder.clearGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="                            .clearGroupMemberIds();"
        errorLine2="                             ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="Builder.addGroupMemberId can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="                groupDescriptorBuilder.addGroupMemberId(memberRouteId);"
        errorLine2="                                       ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="                if (!routeDescriptor.getGroupMemberIds().isEmpty()"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="                        &amp;&amp; mMemberRouteIds.containsAll(routeDescriptor.getGroupMemberIds())) {"
        errorLine2="                                                                       ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="            if (routeDescriptor.getGroupMemberIds().isEmpty()) {"
        errorLine2="                                ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="RestrictedApiAndroidX"
        message="MediaRouteDescriptor.getGroupMemberIds can only be called from within the same library (androidx.mediarouter:mediarouter)"
        errorLine1="            for (String routeId : routeDescriptor.getGroupMemberIds()) {"
        errorLine2="                                                  ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/androidx/mediarouting/providers/SampleDynamicGroupMediaRouteProvider.java"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        message="This folder configuration (`v18`) is unnecessary; `minSdkVersion` is 21. Merge all the resources in this folder into `values`.">
        <location
            file="src/main/res/values-v18"/>
    </issue>

</issues>
