code: @NonNull
      @Override
      @UiThread
      public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
          if (isParentViewType(viewType)) {
              PVH pvh = onCreateParentViewHolder(viewGroup, viewType);
              pvh.setParentViewHolderExpandCollapseListener(mParentViewHolderExpandCollapseListener);
              pvh.mExpandableAdapter = this;
              return pvh;
          } else {
              CVH cvh = onCreateChildViewHolder(viewGroup, viewType);
              cvh.mExpandableAdapter = this;
              return cvh;
          }
      }
docs: Implementation of Adapter.onCreateViewHolder(ViewGroup, int)
  that determines if the list item is a parent or a child and calls through
  to the appropriate implementation of either {@link #onCreateParentViewHolder(ViewGroup, int)}
  or {@link #onCreateChildViewHolder(ViewGroup, int)}.
  
  @param viewGroup The {@link ViewGroup} into which the new {@link android.view.View}
  will be added after it is bound to an adapter position.
  @param viewType  The view type of the new {@code android.view.View}.
  @return A new RecyclerView.ViewHolder
  that holds a {@code android.view.View} of the given view type.