I think maybe it can be even simpler and we can just make the caller in Order de-dup all the time, and only have 1  callback in OrderItem?  That way if the OrderItem includes something actually unique pertaining to itself it will not be de-duped.  Otherwise will be.  Actually we can just have the Order.generate_receipt_instructions return both a deduped set and non-deduped dictionary.