protected virtual IPurchasable SelectFromQuote(EntityReference quote, Entity purchaseMetadata = null, IEnumerable <IPurchasableItemOptions> options = null) { var requiresShipping = purchaseMetadata != null && purchaseMetadata.GetAttributeValue <bool?>(PurchaseMetadataAttributes.RequriesShipping).GetValueOrDefault(false); var quoteDataAdapter = new QuotePurchaseDataAdapter(quote, Dependencies, requiresShipping); return(quoteDataAdapter.Select(options ?? Enumerable.Empty <IPurchasableItemOptions>())); }