@Override
  public ShoppingCart populateAddressAndShippingFields(
      final ShoppingCart shoppingCart, final CartOrder cartOrder) {
    Address billingAddress = getBillingAddress(cartOrder);
    shoppingCart.setBillingAddress(billingAddress);
    Address shippingAddress = getShippingAddress(cartOrder);
    shoppingCart.setShippingAddress(shippingAddress);
    Store store = shoppingCart.getStore();
    List<ShippingServiceLevel> shippingServiceLevels =
        shippingServiceLevelService.retrieveShippingServiceLevel(store.getCode(), shippingAddress);

    if (CollectionUtils.isNotEmpty(shippingServiceLevels)) {

      String shippingServiceLevelGuidFromCartOrder = cartOrder.getShippingServiceLevelGuid();
      ShippingServiceLevel matchingShippingServiceLevel =
          getShippingServiceLevelMatchingGuid(
              shippingServiceLevels, shippingServiceLevelGuidFromCartOrder);

      if (matchingShippingServiceLevel != null) {
        shoppingCart.setShippingServiceLevelList(shippingServiceLevels);
        shoppingCart.setSelectedShippingServiceLevelUid(matchingShippingServiceLevel.getUidPk());
      }
    }

    return shoppingCart;
  }