private function withBuiltInFactories(): ValidatorFactory
    {
        $keys = array_keys(self::$defaults);

        return array_reduce($keys, function ($factory, $key) {

            $rule = self::$defaults[$key];

            return $factory->withRuleFactory($key, function (array $parameters = []) use ($rule) {

                return new $rule(...$parameters);

            });

        }, $this);
    }