class GeoWithinListOutput<K, V> extends CommandOutput<K, V, List<GeoWithin<V>>>
        implements StreamingOutput<GeoWithin<V>> {

    private V member;

    private boolean hasMember;

    private Double distance;

    private boolean hasDistance;

    private Long geohash;

    private GeoCoordinates coordinates;

    private Double x;

    private boolean hasX;

    private final boolean withDistance;

    private final boolean withHash;

    private final boolean withCoordinates;

    private Subscriber<GeoWithin<V>> subscriber;

    public GeoWithinListOutput(RedisCodec<K, V> codec, boolean withDistance, boolean withHash, boolean withCoordinates) {
        super(codec, OutputFactory.newList(16));
        this.withDistance = withDistance;
        this.withHash = withHash;
        this.withCoordinates = withCoordinates;
        setSubscriber(ListSubscriber.instance());
    }

    @Override
    public void set(long integer) {

        if (!hasMember) {
            member = (V) (Long) integer;
            hasMember = true;
            return;
        }

        if (withHash) {
            geohash = integer;
        }
    }

    @Override
    public void set(ByteBuffer bytes) {

        if (!hasMember) {
            member = codec.decodeValue(bytes);
            hasMember = true;
            return;
        }

        double value = (bytes == null) ? 0 : parseDouble(decodeAscii(bytes));
        set(value);
    }

    @Override
    public void set(double number) {

        if (withDistance) {
            if (!hasDistance) {
                distance = number;
                hasDistance = true;
                return;
            }
        }

        if (withCoordinates) {
            if (!hasX) {
                x = number;
                hasX = true;
                return;
            }

            coordinates = new GeoCoordinates(x, number);
        }
    }

    @Override
    public void complete(int depth) {<FILL_FUNCTION_BODY>}

    @Override
    public void setSubscriber(Subscriber<GeoWithin<V>> subscriber) {
        LettuceAssert.notNull(subscriber, "Subscriber must not be null");
        this.subscriber = subscriber;
    }

    @Override
    public Subscriber<GeoWithin<V>> getSubscriber() {
        return subscriber;
    }

}


        if (depth == 1) {
            subscriber.onNext(output, new GeoWithin<V>(member, distance, geohash, coordinates));

            member = null;
            hasMember = false;
            distance = null;
            hasDistance = false;
            geohash = null;
            coordinates = null;
            x = null;
            hasX = false;
        }
    
<methods>public void <init>(RedisCodec<K,V>, List<GeoWithin<V>>) ,public void complete(int) ,public List<GeoWithin<V>> get() ,public java.lang.String getError() ,public boolean hasError() ,public void multi(int) ,public void multiArray(int) ,public void multiMap(int) ,public void multiPush(int) ,public void multiSet(int) ,public void set(java.nio.ByteBuffer) ,public void set(long) ,public void set(double) ,public void set(boolean) ,public void setBigNumber(java.nio.ByteBuffer) ,public void setError(java.nio.ByteBuffer) ,public void setError(java.lang.String) ,public void setSingle(java.nio.ByteBuffer) ,public java.lang.String toString() <variables>protected final non-sealed RedisCodec<K,V> codec,protected java.lang.String error,protected List<GeoWithin<V>> output