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;
    }
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;
    }
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 ; }
Get the type if there is only one option left.

@return string|null
Get the type if there is only one option left .