code: @Override
      public Object getItem(int position) throws ArrayIndexOutOfBoundsException {
          Position adapterPosition = translatePosition(position);
          if (adapterPosition.mPosition == POSITION_FILLER
                  || adapterPosition.mPosition == POSITION_HEADER) {
              // Fake entry in view.
              return null;
          }
  
          return mDelegate.getItem(adapterPosition.mPosition);
      }
docs: Get the data item associated with the specified position in the data set.
  <p>
  Since this wrapper inserts fake entries to fill out items grouped by
  header and also spaces to insert headers into some positions will return
  null.
  </p>
  
  @param position Position of the item whose data we want within the
  adapter's data set.
  @return The data at the specified position.