[Ready] Item access refactor

See #9517
1. This deserves its own module.
2. Do we really need this?  This adds a sizeable chunk of code and indirection for not much code simplification.
2a. Are we using all these operations?  What does it look like if you pare it down to the ones being used?