public static function create(Validator $validator = null): self
    {
        return new self(
            new ClosureContainer(
                [
                    'rollerworks_search.input.json' => function () use ($validator) {
                        return new Input\JsonInput($validator);
                    },
                    'rollerworks_search.input.string_query' => function () use ($validator) {
                        return new Input\StringQueryInput($validator);
                    },
                    'rollerworks_search.input.norm_string_query' => function () use ($validator) {
                        return new Input\NormStringQueryInput($validator);
                    },
                ]
            ),
            [
                'json' => 'rollerworks_search.input.json',
                'string_query' => 'rollerworks_search.input.string_query',
                'norm_string_query' => 'rollerworks_search.input.norm_string_query',
            ]
        );
    }