// Path: adapter-toolbox/src/main/java/net/cattaka/android/adaptertoolbox/adapter/listener/IForwardingListener.java
// public interface IForwardingListener<
//         A extends RecyclerView.Adapter<? extends VH>,
//         VH extends RecyclerView.ViewHolder> {
//     void setProvider(@NonNull IProvider<A, VH> provider);
// 
//     interface IProvider<A extends RecyclerView.Adapter<? extends VH>, VH extends RecyclerView.ViewHolder> {
//         @NonNull
//         A getAdapter();
// 
//         @Nullable
//         RecyclerView getAttachedRecyclerView();
//     }
// }


import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import net.cattaka.android.adaptertoolbox.adapter.listener.IForwardingListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
package net.cattaka.android.adaptertoolbox.adapter;




/**
 * Created by cattaka on 16/05/10.
 */
public abstract class AbsScrambleAdapter<
        A extends AbsScrambleAdapter<A, SA, VH, FL, T>,
        SA extends AbsScrambleAdapter<?, SA, VH, ?, ?>,
        VH extends RecyclerView.ViewHolder,
// Path: adapter-toolbox/src/main/java/net/cattaka/android/adaptertoolbox/adapter/listener/IForwardingListener.java
// public interface IForwardingListener<
//         A extends RecyclerView.Adapter<? extends VH>,
//         VH extends RecyclerView.ViewHolder> {
//     void setProvider(@NonNull IProvider<A, VH> provider);
// 
//     interface IProvider<A extends RecyclerView.Adapter<? extends VH>, VH extends RecyclerView.ViewHolder> {
//         @NonNull
//         A getAdapter();
// 
//         @Nullable
//         RecyclerView getAttachedRecyclerView();
//     }
// }


// Path: adapter-toolbox/src/main/java/net/cattaka/android/adaptertoolbox/adapter/AbsScrambleAdapter.java
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import net.cattaka.android.adaptertoolbox.adapter.listener.IForwardingListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

package net.cattaka.android.adaptertoolbox.adapter;




/**
 * Created by cattaka on 16/05/10.
 */
public abstract class AbsScrambleAdapter<
        A extends AbsScrambleAdapter<A, SA, VH, FL, T>,
        SA extends AbsScrambleAdapter<?, SA, VH, ?, ?>,
        VH extends RecyclerView.ViewHolder,
        FL extends IForwardingListener<SA, VH>,