Program: 64746
Project: 64746
Buggy source:
private static void extractAccountDetails(String smsMsg,String transType){
  String[] reqMatch=new String[]{"String_Node_Str","String_Node_Str"};
  fromAccountDetails=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  toAccountDetails=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  int[] mIndx;
  if (transType == "String_Node_Str") {
    mIndx=new int[]{1,2};
  }
 else {
    mIndx=new int[]{1};
  }
  try {
    boolean isUPI=smsMsg.contains("String_Node_Str");
switch (String.valueOf(isUPI)) {
case "String_Node_Str":
      for (int j=0; j <= mIndx.length - 1; j++) {
        reqMatch[j]=searchForAccountNum(smsMsg,mIndx[j]);
      }
    break;
case "String_Node_Str":
  String fromACNum="String_Node_Str";
String toACNum="String_Node_Str";
int fromIndex=smsMsg.indexOf("String_Node_Str");
int toIndex=smsMsg.indexOf("String_Node_Str");
if (fromIndex > 0) {
reqMatch[0]=searchForAccountNum(smsMsg.substring(smsMsg.indexOf("String_Node_Str")),1);
}
if (toIndex > 0) {
reqMatch[1]=searchForAccountNum(smsMsg.substring(smsMsg.indexOf("String_Node_Str")),1);
}
if (fromIndex == -1) {
reqMatch[0]=searchForAccountNum(smsMsg,1);
}
if (toIndex == -1) {
reqMatch[1]=searchForAccountNum(smsMsg,1);
}
if (reqMatch[0].contains(reqMatch[1])) {
reqMatch[1]="String_Node_Str";
}
break;
}
getAccountDetails(reqMatch);
}
 catch (Exception e) {
Timber.e(e,"String_Node_Str");
}
}

Fixed version (ground truth):
private static void extractAccountDetails(String smsMsg,String transType){
  String[] reqMatch=new String[]{"String_Node_Str","String_Node_Str"};
  fromAccountDetails=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  toAccountDetails=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  int[] mIndx;
  if (transType == "String_Node_Str") {
    mIndx=new int[]{1,2};
  }
 else {
    mIndx=new int[]{1};
  }
  try {
    boolean isUPI=smsMsg.contains("String_Node_Str");
switch (String.valueOf(isUPI)) {
case "String_Node_Str":
      for (int j=0; j <= mIndx.length - 1; j++) {
        reqMatch[j]=searchForAccountNum(smsMsg,mIndx[j]);
      }
    break;
case "String_Node_Str":
  String fromString="String_Node_Str";
String toString="String_Node_Str";
String nonUPIMsg=smsMsg;
int fromIndex=smsMsg.indexOf(fromString);
int toIndex=smsMsg.indexOf(toString);
if (toIndex == -1) {
toString="String_Node_Str";
toIndex=smsMsg.indexOf(toString);
}
if (fromIndex > 0) {
if (fromIndex > toIndex) {
reqMatch[0]=searchForAccountNum(smsMsg.substring(fromIndex),1);
if (toIndex == -1) {
nonUPIMsg=smsMsg.substring(0,fromIndex);
}
}
 else {
reqMatch[0]=searchForAccountNum(smsMsg.substring(fromIndex,toIndex),1);
nonUPIMsg=smsMsg.substring(0,fromIndex);
}
}
if (toIndex > 0) {
if (toIndex > fromIndex) {
reqMatch[1]=searchForAccountNum(smsMsg.substring(toIndex),1);
if (toIndex == -1) {
nonUPIMsg=smsMsg.substring(0,toIndex);
}
}
 else {
reqMatch[1]=searchForAccountNum(smsMsg.substring(toIndex,fromIndex),1);
nonUPIMsg=smsMsg.substring(0,toIndex);
}
}
if (fromIndex == -1) {
reqMatch[0]=searchForAccountNum(nonUPIMsg,1);
}
if (toIndex == -1) {
reqMatch[1]=searchForAccountNum(nonUPIMsg,1);
}
if (reqMatch[0].contains(reqMatch[1])) {
reqMatch[1]="String_Node_Str";
}
break;
}
getAccountDetails(reqMatch);
}
 catch (Exception e) {
Timber.e(e,"String_Node_Str");
}
}