private ProductSearchResultContainer AssembleProducts( GetProductPartsDataResponse productPartsResponse, ReadOnlyCollection <UnitOfMeasureConversion> unitOfMeasureOptionsDataSet, ReadOnlyCollection <KitDefinition> kitDefinitions, ReadOnlyCollection <KitComponent> kitComponentAndSubstituteList, ReadOnlyCollection <KitConfigToComponentAssociation> kitConfigToComponentAssociations, ReadOnlyCollection <KitComponent> parentKitsComponentInfo) { var productSearchResult = new ProductSearchResultContainer(); var productParts = new Tuple <ReadOnlyCollection <ProductIdentity>, ReadOnlyCollection <ProductVariant>, ReadOnlyCollection <ProductRules>, ReadOnlyCollection <ProductAttributeSchemaEntry>, ReadOnlyCollection <ProductProperty>, ReadOnlyCollection <ProductCatalog>, ReadOnlyCollection <ProductCategoryAssociation>, Tuple <ReadOnlyCollection <RelatedProduct> > >( productPartsResponse.ProductIdentities, productPartsResponse.ProductVariants, productPartsResponse.ProductRules, productPartsResponse.ProductAttributeSchemaEntries, productPartsResponse.ProductProperties, productPartsResponse.ProductCatalogs, productPartsResponse.CategoryAssociations, new Tuple <ReadOnlyCollection <RelatedProduct> >(productPartsResponse.RelatedProducts)); ProductBuilder.AssembleProductsFromDataSets( this.request.Criteria.Context, this.request.Criteria.DataLevel, productParts, productPartsResponse.LinkedProducts, kitDefinitions, kitComponentAndSubstituteList, kitConfigToComponentAssociations, parentKitsComponentInfo, unitOfMeasureOptionsDataSet, productSearchResult, this.request.RequestContext.GetChannelConfiguration().ProductDefaultImageTemplate); return(productSearchResult); }