public function getHierarchyDelimiter()
    {
        if ( $this->state != self::STATE_AUTHENTICATED &&
             $this->state != self::STATE_SELECTED &&
             $this->state != self::STATE_SELECTED_READONLY )
        {
            throw new ezcMailTransportException( "Can't call getDelimiter() when not successfully logged in." );
        }

        $tag = $this->getNextTag();
        $this->connection->sendData( "{$tag} LIST \"\" \"\"" );

        // there should be only one * LIST response line from IMAP
        $response = trim( $this->getResponse( '* LIST' ) );
        $parts = explode( '"', $response );

        if ( count( $parts ) >= 2 )
        {
            $result = $parts[1];
        }
        else
        {
            throw new ezcMailTransportException( "Could not retrieve the hierarchy delimiter: {$response}." );
        }

        $response = $this->getResponse( $tag, $response );
        if ( $this->responseType( $response ) != self::RESPONSE_OK )
        {
            throw new ezcMailTransportException( "Could not retrieve the hierarchy delimiter: {$response}." );
        }
        return $result;
    }