[Demonstration 1]

[Buggy Method]
@Override
protected void onHandleIntent(Intent intent) {
    String errorMessage = "";
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    receiver = intent.getParcelableExtra(Constants.RECIEVER);
    Location location = intent.getParcelableExtra(Constants.LOCATION_DATA_EXTRA);
    List<Address> addresses = null;
    try {
        //Get a single address from coordinates
        addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
    } catch (IOException ioException) {
        //Network or other I/O problems
        errorMessage = getString(R.string.service_not_available);
        Log.e(TAG, errorMessage, ioException);
    } catch (IllegalArgumentException illegalArgumentException) {
        //Invalid latitude or longitude value
        errorMessage = getString(R.string.invalid_lat_long_used);
        Log.e(TAG, errorMessage + ". " + "Latitude = " + location.getLatitude() + ", Longitude = " + location.getLongitude(), illegalArgumentException);
    }
    if (addresses == null || addresses.size() == 0) {
        //No addresses were found
        if (errorMessage.isEmpty()) {
            errorMessage = getString(R.string.no_address_found);
            Log.e(TAG, errorMessage);
        }
        deliverResultToReceiver(Constants.FAILURE_RESULT, errorMessage);
    } else {
        Address address = addresses.get(0);
        ArrayList<String> addressFragments = new ArrayList<String>();
        //Fetch address lines, join them, send to thread
        for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
            addressFragments.add(address.getAddressLine(i));
        }
        Log.i(TAG, getString(R.string.address_found));
        deliverResultToReceiver(Constants.SUCCESS_RESULT, TextUtils.join(System.getProperty("line.separator"), addressFragments));
    }
}

[Buggy Hunk]
receiver = intent.getParcelableExtra(Constants.RECIEVER);

[Patch]
receiver = intent.getParcelableExtra(Constants.RECEIVER);

[Demonstration 2]

[Buggy Method]
public void initialize(Bundle savedInstanceState) {
    DebugLog.logMethod();
    if (savedInstanceState != null && savedInstanceState.getParcelableArrayList(Constants.BUNDLE_STOCK_QUOTES) != null) {
        swipeRefreshLayout.setRefreshing(false);
        stockQuotes = savedInstanceState.getParcelableArrayList(Constants.BUNDLE_STOCK_QUOTES);
        adapter.updateStockQuotes(stockQuotes);
        return;
    }
    swipeRefreshLayout.setRefreshing(true);
    if (!networkUp()) {
        loadStockQuotes();
        showSnackbar(getString(R.string.toast_error_no_internet_connection));
    }
    QuoteSyncJob.initialize(getContext());
}

[Buggy Hunk]
showSnackbar(getString(R.string.toast_error_no_internet_connection));

[Patch]
showToast(getString(R.string.toast_error_no_internet_connection));

[Demonstration 3]

[Buggy Method]
@Override
protected Result doInBackground(String... params) {
    String code = params[0];
    try {
        final AccessToken token = authorizationService.getToken(new TokenRequest(code, BuildConfig.TRAKT_CLIENT_ID, BuildConfig.TRAKT_SECRET, BuildConfig.TRAKT_REDIRECT_URL, GrantType.AUTHORIZATION_CODE));
        final String accessToken = token.getAccessToken();
        final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
        settings.edit().putString(Settings.TRAKT_TOKEN, accessToken).apply();
        userToken.setToken(accessToken);
        final UserSettings userSettings = usersService.getUserSettings();
        Settings.clearProfile(context);
        Settings.updateProfile(context, userSettings);
        return new Result(accessToken);
    } catch (RetrofitError e) {
        switch(e.getKind()) {
            case NETWORK:
                return new Result(R.string.error_network);
            case HTTP:
                Response response = e.getResponse();
                if (response != null) {
                    int status = response.getStatus();
                    if (status >= 500 && status < 600) {
                        return new Result(R.string.login_error_5xx);
                    }
                }
            case CONVERSION:
            case UNEXPECTED:
        }
        Timber.e(e, "Unable to get token");
        return new Result(R.string.login_error_unknown);
    }
}

[Buggy Hunk]
return new Result(R.string.error_network);

[Patch]
return new Result(R.string.login_error_network);