protected function evaluatePurchasableType(
        PurchasableInterface $purchasable,
        $modifiers
    ) {
        if (empty($modifiers)) {
            return true;
        }

        if (
            false === strpos($modifiers, 'P') &&
            false === strpos($modifiers, 'V') &&
            false === strpos($modifiers, 'K')
        ) {
            return true;
        }

        if (
            $purchasable instanceof ProductInterface &&
            false !== strpos($modifiers, 'P')
        ) {
            return true;
        }

        if (
            $purchasable instanceof VariantInterface &&
            false !== strpos($modifiers, 'V')
        ) {
            return true;
        }

        if (
            $purchasable instanceof PackInterface &&
            false !== strpos($modifiers, 'K')
        ) {
            return true;
        }

        return false;
    }