/**
  * @param Field $field
  * @throws ConfigException
  */
 protected function setDefaultOptions(Field $field)
 {
     $options = $field->getOptions();
     $defaultOptions = $this->provideDefaultOptions();
     $requiredOptions = $this->provideRequiredOptions();
     $requiredOptions = array_combine($requiredOptions, $requiredOptions);
     $resultOptions = array_merge($defaultOptions, $options);
     $unexistedOptions = array_diff_key($requiredOptions, $resultOptions);
     if (count($unexistedOptions)) {
         throw new ConfigException(sprintf('Field \'%s\' (with type \'%s\') must contain required options: \'%s\'.', $field->getName(), $field->getType(), implode('\', \'', $unexistedOptions)));
     }
     $field->setOptions($resultOptions);
 }