code: @Override
      public final void onBindViewHolder(@NonNull ViewHolder holder, int position) {
          Log.v(TAG, "onBindViewHolder() position=" + position
                  + " headerItemCount=" + headerItemCount
                  + " contentItemCount=" + contentItemCount
                  + " footerItemCount=" + footerItemCount);
          // Delegate to proper methods based on the viewType ranges.
          if (headerItemCount > 0 && position < headerItemCount) {
              onBindHeaderItemViewHolder(holder, position);
          } else if (contentItemCount > 0 && position - headerItemCount < contentItemCount) {
              onBindContentItemViewHolder(holder, position - headerItemCount);
          } else if (footerItemCount > 0 && position - headerItemCount - contentItemCount >= 0) {
              onBindFooterItemViewHolder(holder, position - headerItemCount - contentItemCount);
          }
      }
docs: {@inheritDoc}