I think I figured it out. On arrival I have a code snippet:
current.OtherItem = item
Where "OtherItem" is a pointer label I created on my station.

Then on message can resume the item using that pointer label to the item.
I created the resume code first as an on Arrival trigger then copy/paste the code from there to the on message trigger code.
Object fromObject = param(1);
double msgparam1 = param(2);
double msgparam2 = param(3);
double msgparam3 = param(4);
Conveyor.DecisionPoint current = param(9);
Conveyor conveyor = param(10);
{ //************* PickOption Start *************\\
/***popup:Conveyor_StopResumeItem*/
/***tag:description*//**Resume Item*/
if (/**\nCondition: *//***tag:condition*//**/true/**/) {
Object involved = /** \nItem: *//***tag:item*//**/current.OtherItem/**/;
involved.up.as(Conveyor).itemData[involved].resume();
}
} //******* PickOption End *******\\
This forces a resume item pick option in the on message trigger to show up.

With this method I really only wrote one line of code by hand. It was just figuring out where all the pieces needed to go after that. Seems to work so far.