This is a link to your gmail, not to anything public.
If it's worth counting list elements in advance, then you can also allocate the PartitionListValue as a single chunk, rather than palloc in a loop. This may help large partition heirarchies.
And the same thing in create_hash_bounds with hbounds.
create_range_bounds() already doesn't call palloc in a loop. However, then there's an asymmetry in create_range_bounds, which is still takes a double-indirect pointer.
I'm not able to detect that this is saving more than about ~1% less RAM, to create or select from 1000 partitions, probably because other data structures are using much more, and savings here are relatively small.