protected function createInstance(/*# string */ $rawId, array $args)
    {
        // conver 'service_id' to '#service_id'
        $serviceId = ObjectResolver::getServiceId($rawId);

        if (isset($this->loop[$serviceId])) {
            throw new LogicException(
                Message::get(Message::DI_LOOP_DETECTED, $rawId),
                Message::DI_LOOP_DETECTED
            );
        } else {
            $this->loop[$serviceId] = ++$this->counter;
            $obj = $this->getFactory()->createInstance($rawId, $args);
            unset($this->loop[$serviceId]);
            return $obj;
        }
    }