protected function conclude(): ?string
    {
        $types = array_values($this->types);

        // Reset
        $this->types = [];
        $this->value = null;

        if (count($types) < 2) {
            return reset($types) ?: null;
        }

        if (
            count($types) === 2 &&
            (is_a($types[0], \Traversable::class, true) xor is_a($types[1], \Traversable::class, true))
        ) {
            $args = is_a($types[0], \Traversable::class, true) ? $types : array_reverse($types);
            return vsprintf('%s|%s[]', $args);
        }

        return null;
    }