Code Test
To help myself understand the mess, I coded some access functions. Thus {moscode}product_to_name(pr){/moscode} returned the product name {moscode}pr[1]{/moscode}; {moscode}basket_to_total_price(bask){/moscode} returned {code}bask[1]{/code}; and {moscode}basket_to_product(bask,N){/moscode} returned {moscode}bask[2][N]{/moscode}.

