public function getService()
    {
        if (!isset($this->service)) {
            $info = $this->getInfo();
            $this->service = $this->service();

            // Apply the overridden property values.
            foreach (static::PROPERTIES_OVERRIDE as $property) {
                if (!isset($info[$property]) || empty($info[$property])) {
                    continue;
                }
                $method = 'set' . ucwords($property);

                if (is_callable([$this->service, $method])) {
                    call_user_func_array([$this->service, $method], [$info[$property]]);
                }
            }
        }

        return $this->service;
    }