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

    <issue
        id="WrongConstant"
        message="Must be one of: ListBuilder.LARGE_IMAGE, ListBuilder.SMALL_IMAGE, ListBuilder.ICON_IMAGE, ListBuilder.RAW_IMAGE_SMALL, ListBuilder.RAW_IMAGE_LARGE, ListBuilder.UNKNOWN_IMAGE, ListBuilder.ACTION_WITH_LABEL"
        errorLine1="        return mSliceAction.getImageMode();"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="451"
            column="16"/>
    </issue>

    <issue
        id="ClassVerificationFailure"
        message="This call references a method added in API level 26; however, the containing class androidx.slice.builders.impl.ListBuilderBasicImpl is reachable from earlier API levels and will fail run-time class verification."
        errorLine1="        setTtl(ttl == null ? INFINITY : ttl.toMillis());"
        errorLine2="                                            ~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java"
            line="247"
            column="45"/>
    </issue>

    <issue
        id="ClassVerificationFailure"
        message="This call references a method added in API level 26; however, the containing class androidx.slice.builders.impl.ListBuilderImpl is reachable from earlier API levels and will fail run-time class verification."
        errorLine1="        setTtl(ttl == null ? INFINITY : ttl.toMillis());"
        errorLine2="                                            ~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java"
            line="305"
            column="45"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SliceAction getPrimaryAction() {"
        errorLine2="           ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="190"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public List&lt;CellBuilder> getCells() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="198"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public CellBuilder getSeeMoreCell() {"
        errorLine2="           ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="206"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public PendingIntent getSeeMoreIntent() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="214"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public CharSequence getDescription() {"
        errorLine2="           ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="222"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public List&lt;Object> getObjects() {"
        errorLine2="               ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="471"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public List&lt;Integer> getTypes() {"
        errorLine2="               ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="479"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public List&lt;Boolean> getLoadings() {"
        errorLine2="               ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="487"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public CharSequence getCellDescription() {"
        errorLine2="               ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="495"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public PendingIntent getContentIntent() {"
        errorLine2="               ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"
            line="503"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public GridRowBuilderListV1Impl(@NonNull ListBuilderImpl parent, GridRowBuilder builder) {"
        errorLine2="                                                                     ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="56"
            column="70"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void addCell(CellBuilder builder) {"
        errorLine2="                        ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="89"
            column="25"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void setSeeMoreAction(PendingIntent intent) {"
        errorLine2="                                 ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="106"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void setPrimaryAction(SliceAction action) {"
        errorLine2="                                 ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="113"
            column="34"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void setContentDescription(CharSequence description) {"
        errorLine2="                                      ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="119"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void fillFrom(CellBuilder builder) {"
        errorLine2="                             ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"
            line="144"
            column="30"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public ListBuilderBasicImpl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java"
            line="76"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public ListBuilderBasicImpl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                                 ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java"
            line="76"
            column="50"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingBasicImpl(Slice.Builder builder, SliceSpec spec) {"
        errorLine2="                              ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="47"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingBasicImpl(Slice.Builder builder, SliceSpec spec) {"
        errorLine2="                                                     ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="47"
            column="54"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void add(TemplateBuilderImpl builder) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="72"
            column="21"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public TemplateBuilderImpl createMessageBuilder() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="82"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder(MessagingBasicImpl parent) {"
        errorLine2="                              ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="98"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addSource(Icon source) {"
        errorLine2="                              ~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="112"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addText(CharSequence text) {"
        errorLine2="                            ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"
            line="120"
            column="29"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    void add(TemplateBuilderImpl builder);"
        errorLine2="             ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBuilder.java"
            line="35"
            column="14"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    TemplateBuilderImpl createMessageBuilder();"
        errorLine2="    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBuilder.java"
            line="40"
            column="5"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        void addSource(Icon source);"
        errorLine2="                       ~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBuilder.java"
            line="50"
            column="24"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        void addText(CharSequence text);"
        errorLine2="                     ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingBuilder.java"
            line="55"
            column="22"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingListV1Impl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="43"
            column="32"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingListV1Impl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                                ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="43"
            column="49"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void add(TemplateBuilderImpl builder) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="52"
            column="21"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public TemplateBuilderImpl createMessageBuilder() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="60"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder(MessagingListV1Impl parent) {"
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="79"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addSource(Icon source) {"
        errorLine2="                              ~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="92"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addText(CharSequence text) {"
        errorLine2="                            ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"
            line="99"
            column="29"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingSliceBuilder add(MessageBuilder builder) {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="66"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingSliceBuilder add(MessageBuilder builder) {"
        errorLine2="                                     ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="66"
            column="38"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingSliceBuilder add(Consumer&lt;MessageBuilder> c) {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="74"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingSliceBuilder add(Consumer&lt;MessageBuilder> c) {"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="74"
            column="38"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl selectImpl() {"
        errorLine2="              ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="90"
            column="15"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder(MessagingSliceBuilder parent) {"
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="111"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addSource(Icon source) {"
        errorLine2="               ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="119"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addSource(Icon source) {"
        errorLine2="                                        ~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="119"
            column="41"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addSource(IconCompat source) {"
        errorLine2="               ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="127"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addSource(IconCompat source) {"
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="127"
            column="41"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addText(CharSequence text) {"
        errorLine2="               ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="137"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addText(CharSequence text) {"
        errorLine2="                                      ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="137"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder addTimestamp(long timestamp) {"
        errorLine2="               ~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"
            line="145"
            column="16"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingV1Impl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="39"
            column="28"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public MessagingV1Impl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                            ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="39"
            column="45"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public void add(TemplateBuilderImpl builder) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="46"
            column="21"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public TemplateBuilderImpl createMessageBuilder() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="60"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public MessageBuilder(MessagingV1Impl parent) {"
        errorLine2="                              ~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="70"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addSource(Icon source) {"
        errorLine2="                              ~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="78"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="        public void addText(CharSequence text) {"
        errorLine2="                            ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"
            line="86"
            column="29"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder addOption(String optionKey, CharSequence optionText) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="74"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder addOption(String optionKey, CharSequence optionText) {"
        errorLine2="                                      ~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="74"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder addOption(String optionKey, CharSequence optionText) {"
        errorLine2="                                                        ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="74"
            column="57"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setPrimaryAction(@NonNull SliceAction primaryAction) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="93"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setInputAction(@NonNull PendingIntent inputAction) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="107"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setInputAction(@NonNull RemoteCallback inputAction) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="121"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setSelectedOption(String selectedOption) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="132"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setSelectedOption(String selectedOption) {"
        errorLine2="                                              ~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="132"
            column="47"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setTitle(@Nullable CharSequence title) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="143"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setSubtitle(@Nullable CharSequence subtitle) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="154"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setContentDescription(@Nullable CharSequence contentDescription) {"
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="165"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilder setLayoutDirection("
        errorLine2="           ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="176"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public List&lt;Pair&lt;String, CharSequence>> getOptions() {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="186"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SliceAction getPrimaryAction() {"
        errorLine2="           ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="194"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public PendingIntent getInputAction() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="202"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public String getSelectedOption() {"
        errorLine2="           ~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="210"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public CharSequence getTitle() {"
        errorLine2="           ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="218"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public CharSequence getSubtitle() {"
        errorLine2="           ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="226"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public CharSequence getContentDescription() {"
        errorLine2="           ~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"
            line="234"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilderBasicImpl(Slice.Builder sliceBuilder,"
        errorLine2="                                     ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java"
            line="38"
            column="38"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="                                     SelectionBuilder selectionBuilder) {"
        errorLine2="                                     ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java"
            line="39"
            column="38"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilderImpl(Slice.Builder sliceBuilder,"
        errorLine2="                                ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java"
            line="35"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="                                SelectionBuilder selectionBuilder) {"
        errorLine2="                                ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java"
            line="36"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected SelectionBuilder getSelectionBuilder() {"
        errorLine2="              ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java"
            line="48"
            column="15"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SelectionBuilderListV2Impl(Slice.Builder parentSliceBuilder,"
        errorLine2="                                      ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java"
            line="46"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="                                  SelectionBuilder selectionBuilder) {"
        errorLine2="                                  ~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java"
            line="47"
            column="35"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction create(@NonNull PendingIntent action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="174"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction create(@NonNull RemoteCallback action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="193"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createDeeplink(@NonNull PendingIntent action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="243"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createDeeplink(@NonNull RemoteCallback action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="265"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createToggle(@NonNull PendingIntent action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="282"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createToggle(@NonNull RemoteCallback action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="295"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createToggle(@NonNull PendingIntent action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="310"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public static SliceAction createToggle(@NonNull RemoteCallback action,"
        errorLine2="                  ~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/SliceAction.java"
            line="325"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                  ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="53"
            column="35"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl(Slice.Builder b, SliceSpec spec) {"
        errorLine2="                                                   ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="53"
            column="52"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl(Slice.Builder b, SliceSpec spec, Clock clock) {"
        errorLine2="                                  ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="57"
            column="35"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl(Slice.Builder b, SliceSpec spec, Clock clock) {"
        errorLine2="                                                   ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="57"
            column="52"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl(Slice.Builder b, SliceSpec spec, Clock clock) {"
        errorLine2="                                                                   ~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="57"
            column="68"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected void setBuilder(Slice.Builder builder) {"
        errorLine2="                              ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="63"
            column="31"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public Slice build() {"
        errorLine2="           ~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="70"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public Slice.Builder getBuilder() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="80"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public Slice.Builder createChildBuilder() {"
        errorLine2="           ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="88"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public Clock getClock() {"
        errorLine2="           ~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="102"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public SliceSpec getSpec() {"
        errorLine2="           ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"
            line="110"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateSliceBuilder(TemplateBuilderImpl impl) {"
        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="57"
            column="36"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public TemplateSliceBuilder(Context context, Uri uri) {"
        errorLine2="                                ~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="68"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    public TemplateSliceBuilder(Context context, Uri uri) {"
        errorLine2="                                                 ~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="68"
            column="50"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected Slice.Builder getBuilder() {"
        errorLine2="              ~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="91"
            column="15"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected TemplateBuilderImpl selectImpl() {"
        errorLine2="              ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="105"
            column="15"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected boolean checkCompatible(SliceSpec candidate) {"
        errorLine2="                                      ~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="113"
            column="39"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
        errorLine1="    protected Clock getClock() {"
        errorLine2="              ~~~~~">
        <location
            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"
            line="135"
            column="15"/>
    </issue>

</issues>
