It would probably be better if this model conformed to a new protocol CartItem, also generic, and only had simple value types. The properties should only be the things it actually needs to display/perform the required actions on the cart.
Adding a makeCartItem() -> CartItem function to the POSItem protocol lets you define the logic for translating from POSProduct to CartProduct in the concrete implementation, but call it here while being ignorant of whether these are products or... any other type of POSItem.
Continuation from https://github.com/woocommerce/woocommerce-ios/pull/12882