docs: public AdapterDelegatesManager<T> addDelegate(int viewType, boolean allowReplacingDelegate,
                                                    @NonNull AdapterDelegate<T> delegate) {
  
          if (delegate == null) {
              throw new NullPointerException("AdapterDelegate is null!");
          }
  
          if (viewType == FALLBACK_DELEGATE_VIEW_TYPE) {
              throw new IllegalArgumentException("The view type = "
                      + FALLBACK_DELEGATE_VIEW_TYPE
                      + " is reserved for fallback adapter delegate (see setFallbackDelegate() ). Please use another view type.");
          }
  
          if (!allowReplacingDelegate && delegates.get(viewType) != null) {
              throw new IllegalArgumentException(
                      "An AdapterDelegate is already registered for the viewType = "
                              + viewType
                              + ". Already registered AdapterDelegate is "
                              + delegates.get(viewType));
          }
  
          delegates.put(viewType, delegate);
  
          return this;
      }