public function invoke(JobInterface $job, ContextInterface $context)
    {
        $jobType       = $this->registry->get($job->getType());
        $callableArray = $jobType->getCallable();
        $parameters    = static::resolveParameters($jobType, $context, $job->getParameters());

        if (is_array($callableArray) && $callable = $callableArray[0]) {
            if ($callable instanceof JobAwareInterface) {
                $callable->setJob($job);
            }

            if ($callable instanceof ManagerAwareInterface) {
                $callable->setManager($this->manager);
            }

            if ($callable instanceof ControllerAwareInterface) {
                $callable->setController($this->controllerFactory->create($job));
            }

            if ($callable instanceof LoggerAwareInterface && $context->has('abc.logger')) {
                $callable->setLogger($context->get('abc.logger'));
            }
        }

        return call_user_func_array($callableArray, $parameters);
    }