class ReactiveCommandSegmentCommandFactory extends CommandSegmentCommandFactory {

    private boolean streamingExecution;

    ReactiveCommandSegmentCommandFactory(CommandSegments commandSegments, CommandMethod commandMethod,
            RedisCodec<?, ?> redisCodec, CommandOutputFactoryResolver outputResolver) {

        super(commandSegments, commandMethod, redisCodec, outputResolver);

        if (commandMethod.getParameters() instanceof ExecutionSpecificParameters) {

            ExecutionSpecificParameters executionAwareParameters = (ExecutionSpecificParameters) commandMethod.getParameters();

            if (executionAwareParameters.hasTimeoutIndex()) {
                throw new CommandCreationException(commandMethod, "Reactive command methods do not support Timeout parameters");
            }
        }
    }

    @Override
    protected CommandOutputFactory resolveCommandOutputFactory(OutputSelector outputSelector) {<FILL_FUNCTION_BODY>}

    /**
     * @return {@code true} if the resolved {@link io.lettuce.core.output.CommandOutput} should use streaming.
     */
    boolean isStreamingExecution() {
        return streamingExecution;
    }

}


        streamingExecution = ReactiveTypes.isMultiValueType(outputSelector.getOutputType().getRawClass());

        OutputSelector componentType = new OutputSelector(outputSelector.getOutputType().getGeneric(0),
                outputSelector.getRedisCodec());

        if (streamingExecution) {

            CommandOutputFactory streamingFactory = getOutputResolver().resolveStreamingCommandOutput(componentType);

            if (streamingExecution && streamingFactory != null) {
                return streamingFactory;
            }
        }

        return super.resolveCommandOutputFactory(componentType);
    
<methods>public void <init>(io.lettuce.core.dynamic.segment.CommandSegments, io.lettuce.core.dynamic.CommandMethod, RedisCodec<?,?>, io.lettuce.core.dynamic.output.CommandOutputFactoryResolver) ,public RedisCommand<java.lang.Object,java.lang.Object,java.lang.Object> createCommand(java.lang.Object[]) <variables>private final non-sealed io.lettuce.core.dynamic.CommandMethod commandMethod,private final non-sealed io.lettuce.core.dynamic.output.CommandOutputFactory outputFactory,private final non-sealed io.lettuce.core.dynamic.output.CommandOutputFactoryResolver outputResolver,private final io.lettuce.core.dynamic.ParameterBinder parameterBinder,private final non-sealed RedisCodec<java.lang.Object,java.lang.Object> redisCodec,private final non-sealed io.lettuce.core.dynamic.segment.CommandSegments segments,private final non-sealed io.lettuce.core.dynamic.CodecAwareMethodParametersAccessor.TypeContext typeContext