in membership-attribute-service/app/services/AccountDetailsFromZuora.scala [210:230]
private def productIsInstanceOfProductType(product: Product, requestedProductType: String) = {
val requestedProductTypeIsContentSubscription: Boolean = requestedProductType == "ContentSubscription"
product match {
// this ordering prevents Weekly subs from coming back when Paper is requested (which is different from the type hierarchy where Weekly extends Paper)
case _: Product.Weekly => requestedProductType == "Weekly" || requestedProductTypeIsContentSubscription
case Product.Voucher => requestedProductType == "Voucher" || requestedProductType == "Paper" || requestedProductTypeIsContentSubscription
case Product.DigitalVoucher =>
requestedProductType == "DigitalVoucher" || requestedProductType == "Paper" || requestedProductTypeIsContentSubscription
case Product.Delivery =>
requestedProductType == "HomeDelivery" || requestedProductType == "Paper" || requestedProductTypeIsContentSubscription
case Product.NationalDelivery =>
requestedProductType == "HomeDelivery" || requestedProductType == "Paper" || requestedProductTypeIsContentSubscription
case Product.Contribution => requestedProductType == "Contribution"
case Product.Membership => requestedProductType == "Membership"
case Product.Digipack => requestedProductType == "Digipack" || requestedProductTypeIsContentSubscription
case Product.SupporterPlus => requestedProductType == "SupporterPlus" || requestedProductTypeIsContentSubscription
case Product.TierThree => requestedProductType == "TierThree" || requestedProductTypeIsContentSubscription
case Product.AdLite => requestedProductType == "GuardianAdLite"
case _ => requestedProductType == product.name // fallback
}
}