docs: @SuppressWarnings("unchecked")
      public void putRecycledView(RecyclerView.ViewHolder scrap) {
          int viewType = scrap.getItemViewType();
  
          if (mMaxScrap.indexOfKey(viewType) < 0) {
              // does't contains this viewType, initial scrap list
              mMaxScrap.put(viewType, DEFAULT_MAX_SIZE);
              setMaxRecycledViews(viewType, DEFAULT_MAX_SIZE);
          }
  
          // get current heap size
          int scrapHeapSize = mScrapLength.indexOfKey(viewType) >= 0 ? this.mScrapLength.get(viewType) : 0;
  
          if (this.mMaxScrap.get(viewType) > scrapHeapSize) {
              // if exceed current heap size
              mInnerPool.putRecycledView(scrap);
              mScrapLength.put(viewType, scrapHeapSize + 1);
          } else {
              // destroy viewHolder
              destroyViewHolder(scrap);
          }
      }