docs: private View findStartView(RecyclerView.LayoutManager layoutManager,
                                 OrientationHelper helper) {
  
          if (layoutManager instanceof LinearLayoutManager) {
              int firstChild = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
  
              if (firstChild == RecyclerView.NO_POSITION) {
                  return null;
              }
  
              View child = layoutManager.findViewByPosition(firstChild);
  
              float visibleWidth;
  
              // We should return the child if it's visible width
              // is greater than 0.5 of it's total width.
              // In a RTL configuration, we need to check the start point and in LTR the end point
              if (isRtlHorizontal) {
                  visibleWidth = (float) (helper.getTotalSpace() - helper.getDecoratedStart(child))
                          / helper.getDecoratedMeasurement(child);
              } else {
                  visibleWidth = (float) helper.getDecoratedEnd(child)
                          / helper.getDecoratedMeasurement(child);
              }
  
              // If we're at the end of the list, we shouldn't snap
              // to avoid having the last item not completely visible.
              boolean endOfList = ((LinearLayoutManager) layoutManager)
                      .findLastCompletelyVisibleItemPosition()
                      == layoutManager.getItemCount() - 1;
  
              if (visibleWidth > 0.5f && !endOfList) {
                  return child;
              } else if (endOfList) {
                  return null;
              } else {
                  // If the child wasn't returned, we need to return
                  // the next view close to the start.
                  return layoutManager.findViewByPosition(firstChild + 1);
              }
          }
  
          return null;
      }