code: @UiThread
      public void notifyChildRangeInserted(int parentPosition, int childPositionStart, int itemCount) {
          int flatParentPosition = getFlatParentPosition(parentPosition);
          ExpandableWrapper<P, C> parentWrapper = mFlatItemList.get(flatParentPosition);
  
          parentWrapper.setParent(mParentList.get(parentPosition));
          if (parentWrapper.isExpanded()) {
              List<ExpandableWrapper<P, C>> wrappedChildList = parentWrapper.getWrappedChildList();
              for (int i = 0; i < itemCount; i++) {
                  ExpandableWrapper<P, C> child = wrappedChildList.get(childPositionStart + i);
                  mFlatItemList.add(flatParentPosition + childPositionStart + i + 1, child);
              }
              notifyItemRangeInserted(flatParentPosition + childPositionStart + 1, itemCount);
          }
      }
docs: Notify any registered observers that the parent reflected at {@code parentPosition}
  has {@code itemCount} child list items that have been newly inserted at {@code childPositionStart}.
  The child list item previously at {@code childPositionStart} and beyond are now at
  position {@code childPositionStart + itemCount}.
  <p>
  This is a structural change event. Representations of other existing items in the
  data set are still considered up to date and will not be rebound, though their
  positions may be altered.
  
  @param parentPosition Position of the parent which has been added a child, relative
  to the list of parents only.
  @param childPositionStart Position of the first child that has been inserted,
  relative to children of the parent specified by
  {@code parentPosition} only.
  @param itemCount          number of children inserted