Determining a list of Reasons for a State Transition

If you are moving from one State to another programmatically, you can only move to certain allowed states.  According to this posting, there is no easy way to determine which states are allowed.  That’s a crying shame!  It’s especially problematic if you are migrating work items from one system to another.