// Baseline format: 1.0
AddedAbstractMethod: androidx.slice.builders.impl.ListBuilder#addSelection(androidx.slice.builders.SelectionBuilder):
    Added method androidx.slice.builders.impl.ListBuilder.addSelection(androidx.slice.builders.SelectionBuilder)


RemovedClass: androidx.slice.builders.impl.ListBuilderV1Impl:
    Removed class androidx.slice.builders.impl.ListBuilderV1Impl


RemovedMethod: androidx.slice.builders.GridRowBuilder#GridRowBuilder(androidx.slice.builders.ListBuilder):
    Removed constructor androidx.slice.builders.GridRowBuilder(androidx.slice.builders.ListBuilder)
RemovedMethod: androidx.slice.builders.GridRowBuilder#addCell(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder.CellBuilder>):
    Removed method androidx.slice.builders.GridRowBuilder.addCell(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder.CellBuilder>)
RemovedMethod: androidx.slice.builders.GridRowBuilder#setSeeMoreCell(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder.CellBuilder>):
    Removed method androidx.slice.builders.GridRowBuilder.setSeeMoreCell(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder.CellBuilder>)
RemovedMethod: androidx.slice.builders.GridRowBuilder.CellBuilder#CellBuilder(androidx.slice.builders.GridRowBuilder):
    Removed constructor androidx.slice.builders.GridRowBuilder.CellBuilder(androidx.slice.builders.GridRowBuilder)
RemovedMethod: androidx.slice.builders.GridRowBuilder.CellBuilder#CellBuilder(androidx.slice.builders.GridRowBuilder, android.net.Uri):
    Removed constructor androidx.slice.builders.GridRowBuilder.CellBuilder(androidx.slice.builders.GridRowBuilder,android.net.Uri)
RemovedMethod: androidx.slice.builders.ListBuilder#ListBuilder(android.content.Context, android.net.Uri):
    Removed constructor androidx.slice.builders.ListBuilder(android.content.Context,android.net.Uri)
RemovedMethod: androidx.slice.builders.ListBuilder#addGridRow(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder>):
    Removed method androidx.slice.builders.ListBuilder.addGridRow(androidx.core.util.Consumer<androidx.slice.builders.GridRowBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder#addInputRange(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.InputRangeBuilder>):
    Removed method androidx.slice.builders.ListBuilder.addInputRange(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.InputRangeBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder#addRange(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RangeBuilder>):
    Removed method androidx.slice.builders.ListBuilder.addRange(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RangeBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder#addRow(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RowBuilder>):
    Removed method androidx.slice.builders.ListBuilder.addRow(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RowBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder#setColor(int):
    Removed method androidx.slice.builders.ListBuilder.setColor(int)
RemovedMethod: androidx.slice.builders.ListBuilder#setHeader(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.HeaderBuilder>):
    Removed method androidx.slice.builders.ListBuilder.setHeader(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.HeaderBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder#setKeywords(java.util.List<java.lang.String>):
    Removed method androidx.slice.builders.ListBuilder.setKeywords(java.util.List<java.lang.String>)
RemovedMethod: androidx.slice.builders.ListBuilder#setSeeMoreRow(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RowBuilder>):
    Removed method androidx.slice.builders.ListBuilder.setSeeMoreRow(androidx.core.util.Consumer<androidx.slice.builders.ListBuilder.RowBuilder>)
RemovedMethod: androidx.slice.builders.ListBuilder.HeaderBuilder#HeaderBuilder(androidx.slice.builders.ListBuilder):
    Removed constructor androidx.slice.builders.ListBuilder.HeaderBuilder(androidx.slice.builders.ListBuilder)
RemovedMethod: androidx.slice.builders.ListBuilder.HeaderBuilder#HeaderBuilder(androidx.slice.builders.ListBuilder, android.net.Uri):
    Removed constructor androidx.slice.builders.ListBuilder.HeaderBuilder(androidx.slice.builders.ListBuilder,android.net.Uri)
RemovedMethod: androidx.slice.builders.ListBuilder.InputRangeBuilder#InputRangeBuilder(androidx.slice.builders.ListBuilder):
    Removed constructor androidx.slice.builders.ListBuilder.InputRangeBuilder(androidx.slice.builders.ListBuilder)
RemovedMethod: androidx.slice.builders.ListBuilder.RangeBuilder#RangeBuilder(androidx.slice.builders.ListBuilder):
    Removed constructor androidx.slice.builders.ListBuilder.RangeBuilder(androidx.slice.builders.ListBuilder)
RemovedMethod: androidx.slice.builders.ListBuilder.RowBuilder#RowBuilder(android.content.Context, android.net.Uri):
    Removed constructor androidx.slice.builders.ListBuilder.RowBuilder(android.content.Context,android.net.Uri)
RemovedMethod: androidx.slice.builders.ListBuilder.RowBuilder#RowBuilder(androidx.slice.builders.ListBuilder):
    Removed constructor androidx.slice.builders.ListBuilder.RowBuilder(androidx.slice.builders.ListBuilder)
RemovedMethod: androidx.slice.builders.ListBuilder.RowBuilder#RowBuilder(androidx.slice.builders.ListBuilder, android.net.Uri):
    Removed constructor androidx.slice.builders.ListBuilder.RowBuilder(androidx.slice.builders.ListBuilder,android.net.Uri)
RemovedMethod: androidx.slice.builders.TemplateSliceBuilder#checkCompatible(androidx.slice.SliceSpec, android.net.Uri):
    Removed method androidx.slice.builders.TemplateSliceBuilder.checkCompatible(androidx.slice.SliceSpec,android.net.Uri)
RemovedMethod: androidx.slice.builders.TemplateSliceBuilder#selectImpl(android.net.Uri):
    Removed method androidx.slice.builders.TemplateSliceBuilder.selectImpl(android.net.Uri)
RemovedMethod: androidx.slice.builders.impl.GridRowBuilderListV1Impl#GridRowBuilderListV1Impl(androidx.slice.builders.impl.ListBuilderV1Impl, androidx.slice.builders.GridRowBuilder):
    Removed constructor androidx.slice.builders.impl.GridRowBuilderListV1Impl(androidx.slice.builders.impl.ListBuilderV1Impl,androidx.slice.builders.GridRowBuilder)


