protected function renderedFormFieldStrategies(Model $model, array $fields, array $values, array $errors = [])
    {
        $views = [];

        foreach ($fields as $key => $field) {

            try {
                $instance = $this->getFormFieldStrategyFactory()->make($field->display_strategy);

                // @codeCoverageIgnoreStart
            } catch (Exception $e) {
                $message = "Failed to make form field strategy for '{$key}': \n{$e->getMessage()}";

                throw new StrategyRenderException($message, $e->getCode(), $e);
                // @codeCoverageIgnoreEnd
            }

            try {
                $views[ $key ] = $instance->render(
                    $model,
                    $fields[ $key ],
                    old() ? old($key) : array_get($values, $key),
                    array_get($values, $key),
                    array_get($errors, $key, [])
                );

                // @codeCoverageIgnoreStart
            } catch (Exception $e) {
                $message = "Failed to render form field '{$key}' for strategy " . get_class($instance)
                         . ": \n{$e->getMessage()}";

                throw new StrategyRenderException($message, $e->getCode(), $e);
                // @codeCoverageIgnoreEnd
            }
        }

        return $views;
    }