I spent some time today studying heapam_index_build_range_scan and quickly reached the conclusion that it's kind of a mess.
While at it might be helpful and better to also decouple HeapTuple dependency for
IndexBuildCallback. Currently, all AM needs to build HeapTuple in index_build_range_scan function. I looked into all the callback functions and only htup->t_self is used from heaptuple in all the functions (unless I missed something). So, if seems fine will be happy to write patch to make that argument ItemPointer instead of HeapTuple?