src/Traits/FieldCollectionCommomMethods.php
protected function collectionSetAcceptedCount(?string $rules)
    {
        if ($rules !== null && $rules !== "") {
            $acceptedCount = null;

            $rules = explode("|", $rules);
            $exactValues    = [];
            $multiples      = [];
            $min            = 0;
            $max            = null;

            foreach ($rules as $rule) {
                $r = trim($rule);
                $valid = false;

                // Se especifica um número exato de valores
                // que devem ser aceitos...
                if (is_numeric($r) === true) {
                    $exactValues[] = (int)$r;
                    $valid = true;
                } 
                // Se especifica um número múltiplo a 
                // ser levado em consideração para as quantidades
                // de itens que podem ser adicionados na coleção.
                elseif (strpos($r, "*") === 0) {
                    $multiples[] = ((int)(str_replace("*", "", $r)));
                    $valid = true;
                }
                // Se especifica uma quantidade mínima e uma máxima
                // de itens que podem estar presentes na coleção de
                // valores..
                elseif (strpos($r, ",") !== false) {
                    $mm = explode(",", $r);
                    if (count($mm) === 2 && $max === null &&
                        is_numeric($mm[0]) === true && is_numeric($mm[1]) === true) 
                    {
                        $min = (int)$mm[0];
                        $max = (int)$mm[1];

                        if ($min <= $max) {
                            $valid = true;
                        }
                    }
                }


                if ($valid === false) {
                    $msg = "Invalid \"acceptedCount\".";
                    throw new \InvalidArgumentException($msg);
                }
            }


            sort($exactValues);
            sort($multiples);

            $acceptedCount = [
                "exactValues"   => $exactValues,
                "multiples"     => $multiples,
                "min"           => $min,
                "max"           => $max
            ];

            $this->acceptedCount = $acceptedCount;
        }
    }
protected function collectionSetAcceptedCount(?string $rules)
    {
        if ($rules !== null && $rules !== "") {
            $acceptedCount = null;

            $rules = explode("|", $rules);
            $exactValues    = [];
            $multiples      = [];
            $min            = 0;
            $max            = null;

            foreach ($rules as $rule) {
                $r = trim($rule);
                $valid = false;

                // Se especifica um número exato de valores
                // que devem ser aceitos...
                if (is_numeric($r) === true) {
                    $exactValues[] = (int)$r;
                    $valid = true;
                } 
                // Se especifica um número múltiplo a 
                // ser levado em consideração para as quantidades
                // de itens que podem ser adicionados na coleção.
                elseif (strpos($r, "*") === 0) {
                    $multiples[] = ((int)(str_replace("*", "", $r)));
                    $valid = true;
                }
                // Se especifica uma quantidade mínima e uma máxima
                // de itens que podem estar presentes na coleção de
                // valores..
                elseif (strpos($r, ",") !== false) {
                    $mm = explode(",", $r);
                    if (count($mm) === 2 && $max === null &&
                        is_numeric($mm[0]) === true && is_numeric($mm[1]) === true) 
                    {
                        $min = (int)$mm[0];
                        $max = (int)$mm[1];

                        if ($min <= $max) {
                            $valid = true;
                        }
                    }
                }


                if ($valid === false) {
                    $msg = "Invalid \"acceptedCount\".";
                    throw new \InvalidArgumentException($msg);
                }
            }


            sort($exactValues);
            sort($multiples);

            $acceptedCount = [
                "exactValues"   => $exactValues,
                "multiples"     => $multiples,
                "min"           => $min,
                "max"           => $max
            ];

            $this->acceptedCount = $acceptedCount;
        }
    }
Se definido, permite informar uma composição de regras
que especificam as contagens de valores que serão válidas
para a coleção de itens armazenados neste campo.

@param       ?string $rules
Regras que serão definidas conforme especificações abaixo.

As seguintes variáveis podem ser definidas:
- Número exato de de valores que torna a coleção válida.
- Indicação de um número múltiplo que, se observado, torna a coleção válida.
- Número mínimo de valores para a coleção.
- Número máximo de valores para a coleção.

As regras podem ser definidas em conjunto e em qualquer ordem
bastando seguir as orientações:
- Números Exatos [podem ser definidos vários].
Números inteiros separados por "|".

- Número de Múltiplo [podem ser definidos vários].
Números inteiros, precedidos por "*".
Como regra especial, usando "*0" aceitará apenas números PARES e
declarando "*1" aceitará apenas números ÍMPARES.

- Número mínimo e máximo [apenas 1 pode ser definido].
Par de números inteiros, sempre separados por ",".
O primeiro é sempre o número mínimo a ser aceito e o segundo o número
máximo de componentes que a coleção pode atinjir.

@example
<pre>
Regra: "2"
Indica que a coleção será válida somente se houverem
exatos 2 itens na coleção.

Regra: "2|5"
Neste caso a coleção será válida somente se houverem exatos
2 ou 5 itens.

Regra: "*3"
Para este caso, a coleção será válida apenas se a quantidade
total dos itens for um múltiplo de 3. Sendo "0" um valor aceito
também pois não foi exigido um número mínimo de itens.

Regra: "2,10"
Com esta regra a coleção deverá ter ao menos 2 itens e no máximo
10 para ser considerada válida.

Regra: "*3|3,12"
Com estas 2 regras definidas juntamente a coleção será validada
apenas se contiver 3, 6, 9 ou 12 itens pois exige ao menos 3 itens
e no máximo 12 sendo que necessariamente precisa ser um múltiplo
de 3.

Regra: "2|3|5|*3|*5|0,20"
Com esta regra será considerado válido um conjunto que tenha exatos
2, 3 ou 5 itens ou uma quantidade múltipla de 3 ou 5 dentro do limite
de até 20 itens. Também é aceito um conjunto vazio, sem item algum.
</pre>

@throws      \InvalidArgumentException
Caso algum valor passado não seja válido.