[Demonstration 1]

[Buggy Method]
@Override
public Object getObject(final Object key) {
    return execute(new RedisCallback() {

        @Override
        public Object doWithRedis(Jedis jedis) {
            return SerializeUtil.unserialize(jedis.hget(id.toString().getBytes(), key.toString().getBytes()));
        }
    });
}

[Buggy Hunk]
return SerializeUtil.unserialize(jedis.hget(id.toString().getBytes(), key.toString().getBytes()));

[Patch]
return SerializeUtil.unserialize(jedis.hget(id.getBytes(), key.toString().getBytes()));

[Demonstration 2]

[Buggy Method]
public void sendPhoneNumberToServer(final String phone) {
    // http://192.168.43.57/demo/api/customer_reg?phone=01711310912
    String url = "http://kolorob.net/demo/api/customer_reg?phone=" + phone + "&email=" + emailaddress + "&name=" + uname + "&deviceid=" + IMEINumber + "&username=" + username + "&password=" + password + "";
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            // Toast.makeText(PhoneRegActivity.this,response,Toast.LENGTH_SHORT).show();
            // Log.d(">>>>>","status "+response);
            String notvalid = response;
            try {
                //
                if (response.equals("true")) {
                    SharedPreferencesHelper.setNumber(con, phoneNumber);
                    SharedPreferencesHelper.setUname(con, uname);
                    AlertMessage.showMessage(PhoneRegActivity.this, "রেজিস্ট্রেশন সফলভাবে সম্পন্ন হয়েছে", " রেজিস্ট্রেশন করার জন্য আপনাকে ধন্যবাদ");
                } else if (response.equals("\"Invalid Phone Number\"")) {
                    AlertMessage.showMessage(PhoneRegActivity.this, "দুঃখিত আপনার ফোন নম্বরটি সঠিক নয়", "অনুগ্রহ পূর্বক সঠিক ফোন নম্বরটি ইনপুট দিন");
                } else if (response.contains("EXISTING")) {
                    List<String> responses = Arrays.asList(response.split(","));
                    String serverusername = responses.get(1);
                    String serverphonenumber = responses.get(2);
                    SharedPreferencesHelper.setNumber(con, serverphonenumber);
                    SharedPreferencesHelper.setUname(con, serverusername);
                    AlertMessage.showMessage(PhoneRegActivity.this, "দুঃখিত! আপনার ডিভাইস থেকে আগেই কলরব সেটআপ হয়েছে", "আপনার ইউজার নেম = " + serverusername + " এবং ফোন নাম্বার= " + serverphonenumber);
                } else {
                    // SharedPreferencesHelper.setNumber(con,phoneNumber); this has been commented to prevent
                    // user using same number in multiple device
                    AlertMessage.showMessage(PhoneRegActivity.this, "দুঃখিত", "এই নাম্বার টি আগেই নিবন্ধিত হয়েছে");
                }
                //  finish();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            ToastMessageDisplay.setText(PhoneRegActivity.this, error.toString());
            ToastMessageDisplay.showText(PhoneRegActivity.this);
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            return params;
        }
    };
    // Adding request to request queue
    RequestQueue requestQueue = Volley.newRequestQueue(PhoneRegActivity.this);
    requestQueue.add(stringRequest);
}

[Buggy Hunk]
String serverusername=responses.get(1);

[Patch]
String serverusername=responses.get(3);

[Demonstration 3]

[Buggy Method]
@Override
public boolean compareAndSet(String key, String value, String oldValue, Integer expireSeconds) {
    Jedis jedis = null;
    try {
        jedis = getJedisConnection();
        jedis.watch(key);
        String readOldValue = jedis.get(key);
        if (Objects.equals(readOldValue, oldValue)) {
            Transaction tx = jedis.multi();
            Response<String> result = null;
            if (expireSeconds != null) {
                result = tx.setex(key, expireSeconds, value);
            } else {
                result = tx.set(key, value);
            }
            List<Object> results = tx.exec();
            if (results == null || result == null || result.get() == null) {
                return false;
            } else {
                return true;
            }
        } else {
            return false;
        }
    } catch (Exception e) {
        LOGGER.error("compareAndSet error,key:{}, value:{}, oldValue:{}", key, value, oldValue);
        return false;
    } finally {
        if (jedis != null) {
            try {
                jedis.close();
            } catch (Exception e) {
                LOGGER.error("close jedis error, key:{}", key, e);
            }
        }
    }
}

[Buggy Hunk]
if(expireSeconds != null) {

[Patch]
if(expireSeconds != null && expireSeconds >= 0) {