[Demonstration 1]

[Buggy Method]
@ReactMethod
protected void getFileMD5(final String filePath, Promise promise) {
    this.promise = promise;
    File file = new File(filePath);
    if (file == null || !file.exists() || !file.isFile()) {
        this.promise.reject(E_FILE_NOT_EXISTS, "文件不存在");
        return;
    }
    MessageDigest digest = null;
    FileInputStream in = null;
    byte[] buffer = new byte[1024];
    int len;
    try {
        digest = MessageDigest.getInstance("MD5");
        in = new FileInputStream(file);
        while ((len = in.read(buffer, 0, 1024)) != -1) {
            digest.update(buffer, 0, len);
        }
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
        this.promise.reject(E_CALCULATE_FILE_MD5_FAILED, "计算文件md5失败");
        return;
    }
    BigInteger bigInt = new BigInteger(1, digest.digest());
    this.promise.resolve(bigInt.toString(16));
}

[Buggy Hunk]
protected void getFileMD5(final String filePath, Promise promise) {

[Patch]
public void getFileMD5(final String filePath, Promise promise) {

[Demonstration 2]

[Buggy Method]
private void detectAndHandle(Entry entry, byte[] b) throws Exception {
    String detectedType = FileTypeDetector.detect(b);
    FileTypeHandler fileTypeHandler = FileTypeDetector.getFileTypeHandler(detectedType);
    if (fileTypeHandler == null) {
        fileTypeHandler = new SimpleCopyHandler("unknown");
    }
    Map<Long, String> crcMap = flm.getCrcMap();
    String newFileName = null;
    boolean isUnknown = false;
    if (crcMap.containsKey(entry.nameHash.longValue())) {
        String fileName = crcMap.get(entry.nameHash.longValue());
        newFileName = fileName;
    } else {
        newFileName = entry.nameHash.toString(16);
        isUnknown = true;
    }
    fileTypeHandler.handle(b, this.fileName, newFileName, isUnknown);
}

[Buggy Hunk]
newFileName = entry.nameHash.toString(16);

[Patch]
newFileName = StringUtils.leftPad(entry.nameHash.toString(16), 16, '0');

[Demonstration 3]

[Buggy Method]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Snackbar.make(null, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show();
        }
    });
}

[Buggy Hunk]
Snackbar.make(null, "Replace with your own action", Snackbar.LENGTH_LONG)

[Patch]
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)