private void recordHeaderPositionAndNotify(int sectionIndex, View headerView, HeaderPosition newHeaderPosition) {
        if (headerPositionsBySection.containsKey(sectionIndex)) {
            HeaderPosition currentHeaderPosition = headerPositionsBySection.get(sectionIndex);
            if (currentHeaderPosition != newHeaderPosition) {
                headerPositionsBySection.put(sectionIndex, newHeaderPosition);
                if (headerPositionChangedCallback != null) {
                    headerPositionChangedCallback.onHeaderPositionChanged(sectionIndex, headerView, currentHeaderPosition, newHeaderPosition);
                }

            }
        } else {
            headerPositionsBySection.put(sectionIndex, newHeaderPosition);
            if (headerPositionChangedCallback != null) {
                headerPositionChangedCallback.onHeaderPositionChanged(sectionIndex, headerView, HeaderPosition.NONE, newHeaderPosition);
            }
        }
    }
Updates firstViewAdapterPosition to the adapter position  of the highest item in the list - e.g., the
adapter position of the item with lowest y value in the list

@return the y value of the topmost view in the layout, or paddingTop if empty
android/modules/module_common/src/main/java/github/tornaco/android/thanos/widget/section/StickyHeaderLayoutManager.java