public <A extends IAdapter<Item>> FastAdapter<Item> addAdapter(int index, A adapter) {
        mAdapters.add(index, adapter);
        adapter.withFastAdapter(this);
        adapter.mapPossibleTypes(adapter.getAdapterItems());
        for (int i = 0; i < mAdapters.size(); i++) {
            mAdapters.get(i).setOrder(i);
        }
        cacheSizes();
        return this;
    }
public < A extends IAdapter < Item > > FastAdapter < Item > addAdapter ( int index , A adapter ) { mAdapters . add ( index , adapter ) ; adapter . withFastAdapter ( this ) ; adapter . mapPossibleTypes ( adapter . getAdapterItems ( ) ) ; for ( int i = 0 ; i < mAdapters . size ( ) ; i ++ ) { mAdapters . get ( i ) . setOrder ( i ) ; } cacheSizes ( ) ; return this ; }
add's a new adapter at the specific position

@param index   the index where the new adapter should be added
@param adapter the new adapter to be added
@return this