Program: 82067
Project: 82067
Buggy source:
/** 
 * Take input string, and create the instance.
 * @param bics string in "bigintcs:HHHHHH-HHHHHH-CCCCCC" format
 * @return big integer string checksum object
 * @throws SecretShareException on error, such as null input, ORinput doesn't start with correct prefix OR string does not have 0-9a-f digits OR checksum doesn't match.
 */
public static BigIntStringChecksum fromString(String bics){
  boolean returnIsNegative=false;
  BigIntStringChecksum ret=null;
  if (bics == null) {
    createThrow("String_Node_Str",bics);
  }
  if (startsWithPrefix(bics)) {
    String noprefix=bics.substring(PREFIX_BIGINT_DASH_CHECKSUM.length());
    String noprefixnosign=noprefix;
    if (noprefixnosign.startsWith("String_Node_Str")) {
      returnIsNegative=true;
      noprefixnosign=noprefixnosign.substring(1);
    }
    String[] split=noprefixnosign.split("String_Node_Str");
    if (split.length <= 1) {
      createThrow("String_Node_Str",bics);
    }
 else {
      String asHex="String_Node_Str";
      if (returnIsNegative) {
        asHex="String_Node_Str";
      }
      for (int i=0, n=split.length - 1; i < n; i++) {
        asHex+=split[i];
      }
      String computedMd5sum=computeMd5ChecksumLimit6(asHex);
      String givenMd5sum=split[split.length - 1];
      if (computedMd5sum.equalsIgnoreCase(givenMd5sum)) {
        ret=new BigIntStringChecksum(asHex,computedMd5sum);
      }
 else {
        createThrow("String_Node_Str" + givenMd5sum + "String_Node_Str"+ computedMd5sum+ "String_Node_Str",bics);
      }
    }
  }
 else {
    createThrow("String_Node_Str" + PREFIX_BIGINT_DASH_CHECKSUM + "String_Node_Str",bics);
  }
  ret.asBigInteger();
  return ret;
}

Fixed version (ground truth):
/** 
 * Take input string, and create the instance. As of version 1.3.2 forward, the case of the INPUT is not relevant. Note, however, that when the Checksum CCCCCC is computed, the hex hhhhhh- string is LOWER CASE.
 * @param bics string in "bigintcs:hhhhhh-hhhhhh-CCCCCC" format
 * @return big integer string checksum object
 * @throws SecretShareException on error, such as null input, ORinput doesn't start with correct prefix OR string does not have 0-9a-f digits OR checksum doesn't match.
 */
public static BigIntStringChecksum fromString(String bics){
  boolean returnIsNegative=false;
  BigIntStringChecksum ret=null;
  if (bics == null) {
    createThrow("String_Node_Str",bics);
  }
  if (startsWithPrefix(bics)) {
    String noprefix=bics.substring(PREFIX_BIGINT_DASH_CHECKSUM.length());
    String noprefixnosign=noprefix;
    if (noprefixnosign.startsWith("String_Node_Str")) {
      returnIsNegative=true;
      noprefixnosign=noprefixnosign.substring(1);
    }
    String[] split=noprefixnosign.split("String_Node_Str");
    if (split.length <= 1) {
      createThrow("String_Node_Str",bics);
    }
 else {
      String asHex="String_Node_Str";
      if (returnIsNegative) {
        asHex="String_Node_Str";
      }
      for (int i=0, n=split.length - 1; i < n; i++) {
        asHex+=split[i];
      }
      String computedMd5sum=computeMd5ChecksumLimit6(asHex);
      String givenMd5sum=split[split.length - 1];
      if (computedMd5sum.equalsIgnoreCase(givenMd5sum)) {
        ret=new BigIntStringChecksum(asHex,computedMd5sum);
      }
 else {
        createThrow("String_Node_Str" + givenMd5sum + "String_Node_Str"+ computedMd5sum+ "String_Node_Str",bics);
      }
    }
  }
 else {
    createThrow("String_Node_Str" + PREFIX_BIGINT_DASH_CHECKSUM + "String_Node_Str",bics);
  }
  ret.asBigInteger();
  return ret;
}