protected function parseSource($data)
 {
     $source = new Source();
     if (array_key_exists('extensions', $data)) {
         $source->setExtensions($data['extensions']);
     }
     if (array_key_exists('name', $data)) {
         $source->setName($data['name']);
     }
     if (array_key_exists('paths', $data)) {
         $source->setPaths($data['paths']);
     }
     if (array_key_exists('sources', $data)) {
         if (is_bool($data['sources'])) {
             $source->setExpand($data['sources']);
         } else {
             $sources = [];
             foreach ($data['sources'] as $sourceData) {
                 $sources[] = $this->parseSource($sourceData);
             }
             $source->setSources($sources);
         }
     }
     return $source;
 }