// Path: app/src/main/java/com/lucilu/rxdynamicsearch/ui/adapter/base/IListItemComparator.java
// public interface IListItemComparator {
// 
//     /**
//      * Decides whether two {@link DisplayableItem} represent the same Item.
//      * For example, if your items have unique ids, this method should check their id equality.
//      *
//      * @return True if the two items represent the same object or false if they are different.
//      */
//     boolean areItemsTheSame(final DisplayableItem item1, final DisplayableItem item2);
// 
//     /**
//      * Checks whether the visual representation of two {@link DisplayableItem}s is the same.
//      *
//      * This method is called only if {@link #areItemsTheSame(DisplayableItem, DisplayableItem)}
//      * returns {@code true} for these items. For instance, when the item is the same with different
//      * state, like selected.
//      *
//      * @return True if the visual representation for the {@link DisplayableItem}s are the same or
//      * false if they are different.
//      */
//     boolean areContentsTheSame(final DisplayableItem item1, final DisplayableItem item2);
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/viewmodel/pojo/DisplayableItem.java
// @AutoValue
// public abstract class DisplayableItem<T> {
// 
//     public abstract int type();
// 
//     @NonNull
//     public abstract T model();
// 
//     @SuppressWarnings("NullableProblems")
//     @AutoValue.Builder
//     public abstract static class Builder<T> {
// 
//         @NonNull
//         public abstract Builder<T> type(@NonNull int type);
// 
//         @NonNull
//         public abstract Builder<T> model(@NonNull T model);
// 
//         @NonNull
//         public abstract DisplayableItem<T> build();
//     }
// 
//     @NonNull
//     public static <T> Builder<T> builder() {
//         return new AutoValue_DisplayableItem.Builder<>();
//     }
// }


import com.lucilu.rxdynamicsearch.ui.adapter.base.IListItemComparator;
import com.lucilu.rxdynamicsearch.viewmodel.pojo.DisplayableItem;
import android.support.annotation.NonNull;
import android.support.v7.util.DiffUtil;
import java.util.List;
package com.lucilu.rxdynamicsearch.ui.adapter;




final class DiffUtilCallback extends DiffUtil.Callback {

    @NonNull
    private final List<DisplayableItem> mOldItems;

    @NonNull
    private final List<DisplayableItem> mNewItems;

    @NonNull
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/ui/adapter/base/IListItemComparator.java
// public interface IListItemComparator {
// 
//     /**
//      * Decides whether two {@link DisplayableItem} represent the same Item.
//      * For example, if your items have unique ids, this method should check their id equality.
//      *
//      * @return True if the two items represent the same object or false if they are different.
//      */
//     boolean areItemsTheSame(final DisplayableItem item1, final DisplayableItem item2);
// 
//     /**
//      * Checks whether the visual representation of two {@link DisplayableItem}s is the same.
//      *
//      * This method is called only if {@link #areItemsTheSame(DisplayableItem, DisplayableItem)}
//      * returns {@code true} for these items. For instance, when the item is the same with different
//      * state, like selected.
//      *
//      * @return True if the visual representation for the {@link DisplayableItem}s are the same or
//      * false if they are different.
//      */
//     boolean areContentsTheSame(final DisplayableItem item1, final DisplayableItem item2);
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/viewmodel/pojo/DisplayableItem.java
// @AutoValue
// public abstract class DisplayableItem<T> {
// 
//     public abstract int type();
// 
//     @NonNull
//     public abstract T model();
// 
//     @SuppressWarnings("NullableProblems")
//     @AutoValue.Builder
//     public abstract static class Builder<T> {
// 
//         @NonNull
//         public abstract Builder<T> type(@NonNull int type);
// 
//         @NonNull
//         public abstract Builder<T> model(@NonNull T model);
// 
//         @NonNull
//         public abstract DisplayableItem<T> build();
//     }
// 
//     @NonNull
//     public static <T> Builder<T> builder() {
//         return new AutoValue_DisplayableItem.Builder<>();
//     }
// }


// Path: app/src/main/java/com/lucilu/rxdynamicsearch/ui/adapter/DiffUtilCallback.java
import com.lucilu.rxdynamicsearch.ui.adapter.base.IListItemComparator;
import com.lucilu.rxdynamicsearch.viewmodel.pojo.DisplayableItem;
import android.support.annotation.NonNull;
import android.support.v7.util.DiffUtil;
import java.util.List;

package com.lucilu.rxdynamicsearch.ui.adapter;




final class DiffUtilCallback extends DiffUtil.Callback {

    @NonNull
    private final List<DisplayableItem> mOldItems;

    @NonNull
    private final List<DisplayableItem> mNewItems;

    @NonNull
    private final IListItemComparator mComparator;