| ⇢ | A | ProductBundleManipulator added | |
| ⇢ | A | ProductBundleUpdater added |
| ⇢ | B | ProductBundleManipulator::applyOptionsToSlot() added | |
| ⇢ | A | ProductBundleUpdater::addMissingSlotsToBundle() added | |
| ⇢ | A | ProductBundleUpdater::__construct() added | |
| ⇢ | A | ProductBundleUpdater::getExistingSlotNames() added | |
| ⇢ | A | ProductBundleManipulator::addSlot() added | |
| ⇢ | A | ProductBundleManipulator::createSlot() added | |
| ⇢ | A | ProductBundleManipulator::addProductsToSlot() added | |
| ⇢ | A | ProductBundleUpdater::slotAlreadyExists() added | |
| ⇢ | A | ProductBundleManipulator::__construct() added | |
| ⇢ | A | ProductBundleManipulator::setProductBundle() added | |
| ⋮ | view more | ||
| A | ↛ | ProductBundleCreator::applyOptionsToSlot() removed | |
| A | ↛ | ProductBundleCreator::addProductsToSlot() removed | |
| A | ↛ | ProductBundleCreator::addSlotToBundle() removed | |
| A | ↛ | ProductBundleCreator::createSlot() removed | |
| A | ↛ | ProductBundleCreator::addProductToSlot() removed | |