/**
  * Describes a specific call.
  *
  * @param Console\Input\InputInterface $input The input interface
  * @param Console\Output\OutputInterface $output The output interface
  * @throws PartKeepr\Console\Commands\Exceptions\ServiceCallNotFoundException If the call was not found in the service
  * @see Console\Command\Command
  */
 protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
 {
     $service = $input->getArgument("service");
     if (substr($service, -7) == "Service") {
         $service = substr($service, 0, strlen($service) - 7);
     }
     $className = "PartKeepr\\" . $service . "\\" . $service . "Service";
     if (!class_exists($className)) {
         throw new \Exception(sprintf("The service %s doesn't exist", $service));
     }
     $reflector = new ServiceReflector($className);
     $call = $reflector->getCall($input->getArgument("call"));
     if (!$call instanceof \PartKeepr\Service\ServiceCallReflector) {
         throw new ServiceCallNotFoundException(sprintf("The call %s was not found in the service %s", $input->getArgument("call"), $service));
     }
     $output->writeln(sprintf("<info>%s:%s</info>: %s", $service, $input->getArgument("call"), $call->getDescription()));
     $output->writeln("");
     $output->writeln($call->getDocumentation());
     $output->writeln("");
     $this->outputParameterTable($call, $output);
     $output->writeln("");
     $this->outputReturnedValuesTable($call, $output);
 }