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;
    }