/**
  * Parse the defined palettes and populate the definition.
  *
  * @param ContainerInterface $container The container where the data shall be stored.
  *
  * @return void
  *
  * @SuppressWarnings(PHPMD.LongVariable)
  */
 protected function parsePalettes(ContainerInterface $container)
 {
     $palettesDefinitionArray = $this->getFromDca('palettes');
     $subPalettesDefinitionArray = $this->getFromDca('subpalettes');
     // Skip while there is no legacy palette definition.
     if (!is_array($palettesDefinitionArray)) {
         return;
     }
     // Ignore non-legacy sub palette definition.
     if (!is_array($subPalettesDefinitionArray)) {
         $subPalettesDefinitionArray = array();
     }
     if ($container->hasDefinition(PalettesDefinitionInterface::NAME)) {
         $palettesDefinition = $container->getDefinition(PalettesDefinitionInterface::NAME);
     } else {
         $palettesDefinition = new DefaultPalettesDefinition();
         $container->setDefinition(PalettesDefinitionInterface::NAME, $palettesDefinition);
     }
     $palettesParser = new LegacyPalettesParser();
     $palettesParser->parse($palettesDefinitionArray, $subPalettesDefinitionArray, $palettesDefinition);
 }
 protected function parseSubPalettes(LegacyPalettesParser $parser, array $subPalettesDca, array $selectorFieldNames)
 {
     $subPalettes = array();
     if (is_array($subPalettesDca)) {
         foreach ($subPalettesDca as $selector => $propertyNames) {
             $properties = array();
             foreach ($propertyNames as $propertyName) {
                 // Check if it is a valid property name.
                 if (!is_string($propertyName)) {
                     throw new \InvalidArgumentException('Invalid property name in sub palette: ' . var_export($propertyName, true));
                 }
                 $and = new PropertyConditionChain();
                 $and->addCondition(new PropertyTrueCondition($selector));
                 $and->addCondition(new PropertyVisibleCondition($selector));
                 $property = new Property($propertyName);
                 $property->setVisibleCondition($and);
                 $properties[] = $property;
             }
             if (count($properties)) {
                 $selectorPropertyName = $parser->createSubpaletteSelectorFieldName($selector, $selectorFieldNames);
                 $subPalettes[$selectorPropertyName] = $properties;
             }
         }
     }
     return $subPalettes;
 }