class CheckoutServiceFacadeImpl implements CheckoutServiceFacade {

    boolean restrictAccessByTag(final String customerTags, final String restrictToCustomerTags) {

        if (StringUtils.isNotBlank(restrictToCustomerTags)) {
            final List<String> allowedTags = Arrays.asList(StringUtils.split(restrictToCustomerTags, ','));
            if (StringUtils.isNotBlank(customerTags)) {
                final List<String> existingTags = Arrays.asList(StringUtils.split(customerTags, ' '));
                for (final String existingTag : existingTags) {
                    if (allowedTags.contains(existingTag)) {
                        return false; // matched
                    }
                }
            }
            return true; // no match
        }
        return false; // no restrictions
    }

    public  CheckoutServiceFacadeImpl(final CustomerOrderService customerOrderService,
                                     final AmountCalculationStrategy amountCalculationStrategy,
                                     final DeliveryTimeEstimationVisitor deliveryTimeEstimationVisitor,
                                     final CustomerOrderPaymentService customerOrderPaymentService,
                                     final CarrierSlaService carrierSlaService,
                                     final PaymentProcessorFactory paymentProcessorFactory,
                                     final PaymentModulesManager paymentModulesManager,
                                     final ReportGenerator reportGenerator);

}