protected function getArgumentConstraintsFromMethodArgumentsPattern(string $methodArgumentsPattern): array
    {
        $matches = [];
        $argumentConstraints = [];

        preg_match_all(self::PATTERN_MATCHRUNTIMEEVALUATIONSDEFINITION, $methodArgumentsPattern, $matches);

        $matchesCount = count($matches[0]);
        for ($i = 0; $i < $matchesCount; $i++) {
            if ($matches[2][$i] === 'in' || $matches[2][$i] === 'matches') {
                $list = [];
                $listEntries = [];

                if (preg_match('/^\s*\(.*\)\s*$/', $matches[3][$i], $list) > 0) {
                    preg_match_all(self::PATTERN_MATCHRUNTIMEEVALUATIONSVALUELIST, $list[0], $listEntries);
                    $matches[3][$i] = $listEntries[1];
                }
            }

            $argumentConstraints[$matches[1][$i]]['operator'][] = $matches[2][$i];
            $argumentConstraints[$matches[1][$i]]['value'][] = $matches[3][$i];
        }
        return $argumentConstraints;
    }