protected function validateEmbedded(string $embeddedValue, string $module, string $view): void
    {
        // extract embedded module and field
        list($embeddedModule, $embeddedModuleField) = false !== strpos($embeddedValue, '.') ?
            explode('.', $embeddedValue) :
            [null, $embeddedValue];

        if (empty($embeddedModule)) {
            $this->errors[] = sprintf(
                '%s module [%s] view reference EMBEDDED column without a module',
                $module,
                $view
            );
        }

        if (! empty($embeddedModule) && ! Utility::isValidModule($embeddedModule)) {
            $this->errors[] = sprintf(
                '%s module [%s] view reference EMBEDDED column with unknown module "%s"',
                $module,
                $view,
                $embeddedModule
            );
        }

        if (empty($embeddedModuleField)) {
            $this->errors[] = sprintf(
                '%s module [%s] view reference EMBEDDED column without a module field',
                $module,
                $view
            );
        }

        if (! empty($embeddedModuleField) && ! Utility::isValidModuleField($module, $embeddedModuleField)) {
            $this->errors[] = sprintf(
                '%s module [%s] view reference EMBEDDED column with unknown field "%s" of module "%s"',
                $module,
                $view,
                $embeddedModuleField,
                $embeddedModule
            );
        }
    }