/// Try-decode a Solana `Instruction` against a series of variant/type pairs,
/// returning the first variant whose `decode` and `arrange_accounts` both
/// succeed.
///
/// Each `$ty` must implement `CarbonDeserialize` (for `decode`) and
/// `ArrangeAccounts` (for the structured `accounts` payload). On a hit, the
/// macro `return`s `Some(EnumName::Variant { program_id, data, accounts })`
/// from the calling function; otherwise it yields `None`.