class AsyncExecutableCommandLookupStrategy extends ExecutableCommandLookupStrategySupport {

    private final StatefulConnection<Object, Object> connection;

    public AsyncExecutableCommandLookupStrategy(List<RedisCodec<?, ?>> redisCodecs,
            CommandOutputFactoryResolver commandOutputFactoryResolver, CommandMethodVerifier commandMethodVerifier,
            StatefulConnection<Object, Object> connection) {

        super(redisCodecs, commandOutputFactoryResolver, commandMethodVerifier);
        this.connection = connection;
    }

    @Override
    public ExecutableCommand resolveCommandMethod(CommandMethod method, RedisCommandsMetadata metadata) {<FILL_FUNCTION_BODY>}

}


        LettuceAssert.isTrue(!method.isReactiveExecution(),
                () -> String.format("Command method %s not supported by this command lookup strategy", method));

        CommandFactory commandFactory = super.resolveCommandFactory(method, metadata);

        return new AsyncExecutableCommand(method, commandFactory, connection);
    
<methods>public void <init>(List<RedisCodec<?,?>>, io.lettuce.core.dynamic.output.CommandOutputFactoryResolver, io.lettuce.core.dynamic.CommandMethodVerifier) <variables>private final non-sealed io.lettuce.core.dynamic.CommandFactoryResolver commandFactoryResolver,private final non-sealed io.lettuce.core.dynamic.CommandMethodVerifier commandMethodVerifier,private final non-sealed io.lettuce.core.dynamic.output.CommandOutputFactoryResolver commandOutputFactoryResolver,private final non-sealed List<RedisCodec<?,?>> redisCodecs