public function traverseProperties(array $splittedPropertyPath)
{
if (count($splittedPropertyPath) === 0) {
return $this;
}
$currentProperty = array_shift($splittedPropertyPath);
if (!isset($this->subConfigurationForProperty[$currentProperty])) {
$type = get_class($this);
if (isset($this->subConfigurationForProperty[self::PROPERTY_PATH_PLACEHOLDER])) {
$this->subConfigurationForProperty[$currentProperty] = clone $this->subConfigurationForProperty[self::PROPERTY_PATH_PLACEHOLDER];
} else {
$this->subConfigurationForProperty[$currentProperty] = new $type();
}
}
return $this->subConfigurationForProperty[$currentProperty]->traverseProperties($splittedPropertyPath);
}