<?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="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.appcompat.AppCompatLintDemo 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="            noop.setCompoundDrawableTintList(csl);"
        errorLine2="                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="63"
            column="18"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 23, the call containing class com.example.android.appcompat.AppCompatLintDemo 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="            noop.setCompoundDrawableTintMode(PorterDuff.Mode.DST);"
        errorLine2="                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="64"
            column="18"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.AppCompatLintDemo is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="            ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="73"
            column="13"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.AppCompatLintDemo is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="                         ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="73"
            column="26"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.AppCompatLintDemoExt is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="            ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemoExt.java"
            line="33"
            column="13"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.AppCompatLintDemoExt is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="                         ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemoExt.java"
            line="33"
            column="26"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.CoreActivityExt is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="            ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CoreActivityExt.java"
            line="34"
            column="13"/>
    </issue>

    <issue
        id="UnsafeNewApiCall"
        message="This call is to a method from API 21, the call containing class com.example.android.appcompat.CoreActivityExt is not annotated with @RequiresApi(x) where x is at least 21. Either annotate the containing class with at least @RequiresApi(21) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(21)."
        errorLine1="            setActionBar(new Toolbar(this));"
        errorLine2="                         ~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CoreActivityExt.java"
            line="34"
            column="26"/>
    </issue>

    <issue
        id="UseAndroidAlpha"
        message="Must use `android:alpha` if `app:alpha` is used"
        errorLine1="    &lt;item app:alpha=&quot;?android:disabledAlpha&quot;"
        errorLine2="          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/color/color_state_list_missing_android_alpha.xml"
            line="19"
            column="11"/>
    </issue>

    <issue
        id="UseAppTint"
        message="Must use `app:tint` instead of `android:tint`"
        errorLine1="        android:tint=&quot;#FF0000&quot; />"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/layout/image_view_using_android_tint.xml"
            line="39"
            column="9"/>
    </issue>

    <issue
        id="UseAppTint"
        message="Must use `app:tint` instead of `android:tint`"
        errorLine1="        android:tint=&quot;#FF0000&quot; />"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/layout/image_view_using_android_tint.xml"
            line="51"
            column="9"/>
    </issue>

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

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

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

    <issue
        id="SyntheticAccessor"
        message="Access to `private` member of class `ResourceLoader` requires synthetic accessor"
        errorLine1="        ColorStateList csl2 = new ResourceLoader().getColorStateList("
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="54"
            column="31"/>
    </issue>

    <issue
        id="SyntheticAccessor"
        message="Access to `private` method `getColorStateList` of class `ResourceLoader` requires synthetic accessor"
        errorLine1="        ColorStateList csl2 = new ResourceLoader().getColorStateList("
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="54"
            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 myButtonClick(View view) {"
        errorLine2="                              ~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/ActivityWithClick.java"
            line="39"
            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 onCreate(Bundle savedInstanceState) {"
        errorLine2="                         ~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/AppCompatLintDemo.java"
            line="42"
            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/appcompat/AppCompatLintDemoExt.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/appcompat/CoreActivityExt.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 CustomSwitch(Context context) {"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CustomSwitch.java"
            line="28"
            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 CustomSwitch(Context context, AttributeSet attrs) {"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CustomSwitch.java"
            line="32"
            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 CustomSwitch(Context context, AttributeSet attrs) {"
        errorLine2="                                         ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CustomSwitch.java"
            line="32"
            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 CustomSwitch(Context context, AttributeSet attrs, int defStyleAttr) {"
        errorLine2="                        ~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CustomSwitch.java"
            line="36"
            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 CustomSwitch(Context context, AttributeSet attrs, int defStyleAttr) {"
        errorLine2="                                         ~~~~~~~~~~~~">
        <location
            file="src/main/java/com/example/android/appcompat/CustomSwitch.java"
            line="36"
            column="42"/>
    </issue>

</issues>
