protected function parseRequiredProperties(bool $refresh = false)
    {
        if ($this->requiredParsed !== null && !$refresh) {
            return $this->requiredParsed;
        }

        foreach ($this->required as $index => $item) {
            $property = is_int($index) ? $item : $index;
            $type = 'any';

            if (in_array($property, $this->ignored)) {
                continue;
            }

            if (isset($this->requiredTypes[$property])) {
                $type = $this->requiredTypes[$property];
            } elseif (!is_int($index) && $item !== '*' && !$this->allRequired) {
                $type = $item;
            }

            $this->requiredParsed[$property] = $this->parseAllowedTypes($type);
        }

        return $this->requiredParsed;
    }