/**
  * @param eVersion $targetVersion
  * @param array    $versions
  *
  * @throws \Symfony\Component\Yaml\Exception\ParseException
  * @throws \LogicException
  * @throws \LTDBeget\sphinx\informer\exceptions\InformerRuntimeException
  * @throws \LTDBeget\sphinx\informer\exceptions\DocumentationSourceException
  * @throws \InvalidArgumentException
  */
 private function processVersion(eVersion $targetVersion, array $versions)
 {
     $informer = Informer::get($targetVersion);
     $sections = eSection::getConstants();
     $all_permanently_removed = [];
     foreach ($sections as $section) {
         $section = eSection::get($section);
         if ($informer->isSectionExist($section)) {
             $removed = $this->getPermanentlyRemoved($section, $targetVersion, $versions);
             if (count($removed)) {
                 $all_permanently_removed[(string) $section] = $removed;
             }
         }
     }
     if (count($all_permanently_removed)) {
         $this->dump($targetVersion, $all_permanently_removed);
     }
 }
 public function testAllOptionInfo()
 {
     foreach (eVersion::getConstants() as $version) {
         $version = eVersion::get($version);
         $informer = Informer::get($version);
         foreach (eSection::getConstants() as $section) {
             $section = eSection::get($section);
             if ($informer->isSectionExist($section)) {
                 foreach ($informer->iterateOptionInfo($section) as $optionInfo) {
                     $optionInfo->getSection();
                     $optionInfo->getName();
                     $optionInfo->getDescription();
                     $optionInfo->getDocLink();
                     $optionInfo->getVersion();
                     $optionInfo->isIsMultiValue();
                 }
             }
         }
     }
 }