public function getAllowedDimensionPresetsAccordingToPreselection($dimensionName, array $preselectedDimensionPresets)
    {
        if (!isset($this->configuration[$dimensionName])) {
            return null;
        }

        $dimensionConfiguration = [$dimensionName => $this->configuration[$dimensionName]];
        $sorter = new PositionalArraySorter($dimensionConfiguration[$dimensionName]['presets']);
        $dimensionConfiguration[$dimensionName]['presets'] = $sorter->toArray();

        foreach (array_keys($dimensionConfiguration[$dimensionName]['presets']) as $presetIdentifier) {
            $currentPresetCombination = $preselectedDimensionPresets;
            $currentPresetCombination[$dimensionName] = $presetIdentifier;
            if (!$this->isPresetCombinationAllowedByConstraints($currentPresetCombination)) {
                unset($dimensionConfiguration[$dimensionName]['presets'][$presetIdentifier]);
            }
        }

        return $dimensionConfiguration;
    }