final function withServiceName($serviceName = null)
    {
        if (false == $this->canCreate($serviceName))
            throw new \Exception(sprintf(
                'Can`t Create (%s).'
                , \Poirot\Std\flatten($serviceName)
            ));

        $new = clone $this;
        $new->currentService = $serviceName;
        return $new;
    }
final function withServiceName($serviceName = null)
    {
        if (false == $this->canCreate($serviceName))
            throw new \Exception(sprintf(
                'Can`t Create (%s).'
                , \Poirot\Std\flatten($serviceName)
            ));

        $new = clone $this;
        $new->currentService = $serviceName;
        return $new;
    }
final function withServiceName ( $ serviceName = null ) { if ( false == $ this -> canCreate ( $ serviceName ) ) throw new \ Exception ( sprintf ( 'Can`t Create (%s).' , \ Poirot \ Std \ flatten ( $ serviceName ) ) ) ; $ new = clone $ this ; $ new -> currentService = $ serviceName ; return $ new ; }
Set Create Service Method Respond To This Service

note: when with service called ::newService() will return
mentioned service only and current state can only change with another
call to this method and request for another service

@param string $serviceName

@return iContainerService
@throws \Exception
Set Create Service Method Respond To This Service