[Demonstration 1]

[Buggy Method]
private static <C extends Component<C, I>, I extends IInterface> void bindToService(final Context context, final Descriptor<C, I> descriptor, final ConnectionCallback<C> callback) {
    Intent intent = new Intent();
    intent.setComponent(SPFInfo.getSPFServiceComponentName());
    intent.setAction(descriptor.getActionName());
    ServiceConnection connection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName name, IBinder binder) {
            I service = descriptor.castInterface(binder);
            C instance = descriptor.createInstance(context, service, this, callback);
            callback.onServiceReady(instance);
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            callback.onDisconnect();
        }
    };
    if (context.bindService(intent, connection, Context.BIND_AUTO_CREATE) == false) {
        callback.onError(new SPFError(SPFError.SPF_NOT_INSTALLED_ERROR_CODE));
    }
}

[Buggy Hunk]
if (context.bindService(intent, connection, Context.BIND_AUTO_CREATE) == false) {

[Patch]
if (!context.bindService(intent, connection, Context.BIND_AUTO_CREATE)) {

[Demonstration 2]

[Buggy Method]
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    clearCache = findPreference(CLEAR_CACHE);
    about = findPreference(FEED_BACK);
    version = findPreference(APP_VERSION);
    splash = findPreference(ORIGINAL_SPLASH);
    clearCache.setSummary(clearCache.getSummary() + getCacheSize());
    splash.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object o) {
            secretStepOne();
            return true;
        }
    });
    version.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            Log.i("test", secretIndex + ">>>>");
            if ((Boolean) newValue && secretIndex < 3) {
                //                    BmobUpdateAgent.forceUpdate(getActivity());
            }
            secretStepTwo();
            return true;
        }
    });
    clearCache.setOnPreferenceClickListener(this);
    about.setOnPreferenceClickListener(this);
}

[Buggy Hunk]
clearCache.setSummary(clearCache.getSummary() + getCacheSize());

[Patch]
clearCache.setSummary(clearCache.getSummary() + " " + getCacheSize());

[Demonstration 3]

[Buggy Method]
@Override
public void initialize(Step step, StepResult result, TaskResult taskResult) {
    validateStepAndResult(step);
    this.taskResult = taskResult;
    this.stepResult = result;
    this.taskResult = taskResult;
    // Setup submit bar actions and titles
    SubmitBar submitBar = (SubmitBar) findViewById(R.id.rsb_submit_bar);
    submitBar.setPositiveTitle(getContext().getString(R.string.rsb_continue));
    submitBar.setPositiveAction(v -> attemptSignIn());
    submitBar.setNegativeAction(v -> resendVerificationEmail());
    submitBar.setNegativeTitle(getContext().getString(R.string.rsb_resend_email));
    updateEmailText();
    RxView.clicks(findViewById(R.id.rsb_email_verification_wrong_email)).subscribe(v -> changeEmail());
    // If the the password isn't in the TaskResult, we have to make the user re-enter their's
    if (getPassword(taskResult) == null) {
        RelativeLayout container = (RelativeLayout) findViewById(R.id.rsb_email_verification_container);
        createValidatePasswordStepBody(container);
    }
}

[Buggy Hunk]
submitBar.setPositiveAction(v -> attemptSignIn());

[Patch]
submitBar.setPositiveAction(v -> signIn());