[Demonstration 1]

[Buggy Method]
@Override
final public boolean sendRpc(final RPCRequest request) {
    if (Thread.currentThread() != mExecutionThread) {
        Log.e(TAG, "RPC Sent from thread: " + +Thread.currentThread().getId() + " - " + Thread.currentThread().getName());
        throw new RuntimeException("RPCs may only be sent from the SdlApplication's execution " + "thread. Use SdlContext#getExecutionHandler() to obtain a reference to the " + "execution handler");
    }
    if (mSdlProxyALM != null) {
        try {
            request.setCorrelationID(mAutoCoorId++);
            Log.d(TAG, "Sending RPCRequest type " + request.getFunctionName());
            Log.v(TAG, request.serializeJSON().toString(3));
            final OnRPCResponseListener listener = request.getOnRPCResponseListener();
            OnRPCResponseListener newListener = new OnRPCResponseListener() {

                @Override
                public void onResponse(final int correlationId, final RPCResponse response) {
                    mExecutionHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            try {
                                Log.v(TAG, request.serializeJSON().toString(3));
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                            if (listener != null)
                                listener.onResponse(correlationId, response);
                            request.setOnRPCResponseListener(listener);
                        }
                    });
                }

                @Override
                public void onError(final int correlationId, final Result resultCode, final String info) {
                    mExecutionHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            Log.w(TAG, "RPC Error for correlation ID " + correlationId + " Result: " + resultCode + " - " + info);
                            if (listener != null)
                                listener.onError(correlationId, resultCode, info);
                            request.setOnRPCResponseListener(listener);
                        }
                    });
                }
            };
            request.setOnRPCResponseListener(newListener);
            mSdlProxyALM.sendRPCRequest(request);
        } catch (SdlException e) {
            e.printStackTrace();
            return false;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return true;
    } else {
        return false;
    }
}

[Buggy Hunk]
Log.v(TAG, request.serializeJSON().toString(3));

[Patch]
Log.v(TAG, response.serializeJSON().toString(3));

[Demonstration 2]

[Buggy Method]
@Override
public void sendMessage(String title, String message) {
    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    Session session = Session.getInstance(props, new javax.mail.Authenticator() {

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    });
    try {
        Message emailMessage = new MimeMessage(session);
        myLogger.write("test", "email username is: " + username, 3);
        myLogger.write("test", "email password is: " + password, 3);
        emailMessage.setFrom(new InternetAddress("II1302Group13@gmail.com"));
        emailMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
        emailMessage.setSubject(title);
        emailMessage.setText(message);
        Transport.send(emailMessage);
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

[Buggy Hunk]
emailMessage.setFrom(new InternetAddress("II1302Group13@gmail.com"));

[Patch]
emailMessage.setFrom(new InternetAddress(username));

[Demonstration 3]

[Buggy Method]
@Override
protected void onStart() {
    super.onStart();
    if (!serviceBound) {
        Log.d(TAG, "onStart(): Starting audio service");
        Intent playerIntent = new Intent(this, AudioService.class);
        startService(playerIntent);
        bindService(playerIntent, audioConnection, Context.BIND_AUTO_CREATE);
    }
}

[Buggy Hunk]
Log.d(TAG, "onStart(): Starting audio service");

[Patch]
Debug.LOG_D(DEBUG_TAG, "Starting audio service");