docs: public void setLayoutHelpers(@Nullable List<LayoutHelper> helpers) {
          List<LayoutHelper> layoutHelpers = mHelperFinder.getLayoutHelpers();
          Iterator<LayoutHelper> it0 = layoutHelpers.iterator();
          while (it0.hasNext()) {
              LayoutHelper helper = it0.next();
              oldHelpersSet.put(System.identityHashCode(helper), helper);
          }
  
          // set ranges
          if (helpers != null) {
              int start = 0;
              Iterator<LayoutHelper> it1 = helpers.iterator();
              while (it1.hasNext()) {
                  LayoutHelper helper = it1.next();
                  if (helper instanceof FixAreaLayoutHelper) {
                      ((FixAreaLayoutHelper) helper).setAdjuster(mFixAreaAdjustor);
                  }
  
                  if (helper instanceof BaseLayoutHelper && mLayoutViewBindListener != null) {
                      ((BaseLayoutHelper) helper).setLayoutViewBindListener(mLayoutViewBindListener);
                  }
  
  
                  if (helper.getItemCount() > 0) {
                      helper.setRange(start, start + helper.getItemCount() - 1);
                  } else {
                      helper.setRange(-1, -1);
                  }
  
                  start += helper.getItemCount();
              }
          }
  
          this.mHelperFinder.setLayouts(helpers);
  
          layoutHelpers = mHelperFinder.getLayoutHelpers();
          Iterator<LayoutHelper> iterator = layoutHelpers.iterator();
          while (iterator.hasNext()) {
              LayoutHelper layoutHelper = iterator.next();
              newHelpersSet.put(System.identityHashCode(layoutHelper), layoutHelper);
          }
  
          for (Iterator<Map.Entry<Integer, LayoutHelper>> it = oldHelpersSet.entrySet().iterator(); it.hasNext(); ) {
              Map.Entry<Integer, LayoutHelper> entry = it.next();
              Integer key = entry.getKey();
              if (newHelpersSet.containsKey(key)) {
                  newHelpersSet.remove(key);
                  it.remove();
              }
          }
  
  
          for (LayoutHelper helper : oldHelpersSet.values()) {
              helper.clear(this);
          }
  
          if (!oldHelpersSet.isEmpty() || !newHelpersSet.isEmpty()) {
              mSpaceMeasured = false;
          }
  
          oldHelpersSet.clear();
          newHelpersSet.clear();
          requestLayout();
      }