protected function collectCmsModels()
    {
        foreach ($this->cmsModelFiles as $file) {

            try {
                $this->collectSingleCmsModelFromFile($file);

            } catch (\Exception $e) {

                $message = $e->getMessage();

                if ($e instanceof ModelConfigurationDataException) {
                    $message = "{$e->getMessage()} ({$e->getDotKey()})";
                }

                // Wrap and decorate exceptions so it is easier to track the problem source
                throw (new ModelInformationCollectionException(
                    "Issue reading/interpreting model configuration file {$file->getRealPath()}: \n{$message}",
                    (int) $e->getCode(),
                    $e
                ))
                    ->setConfigurationFile($file->getRealPath());
            }
        }

        return $this;
    }