Program: 29284
Project: 29284
Buggy source:
public Hashids(String salt,int minHashLength,String alphabet){
  this.salt=salt;
  if (minHashLength < 0)   this.minHashLength=0;
 else   this.minHashLength=minHashLength;
  this.alphabet=alphabet;
  String uniqueAlphabet="String_Node_Str";
  for (int i=0; i < this.alphabet.length(); i++) {
    if (!uniqueAlphabet.contains("String_Node_Str" + this.alphabet.charAt(i))) {
      uniqueAlphabet+="String_Node_Str" + this.alphabet.charAt(i);
    }
  }
  this.alphabet=uniqueAlphabet;
  int minAlphabetLength=16;
  if (this.alphabet.length() < minAlphabetLength) {
    throw new IllegalArgumentException("String_Node_Str" + minAlphabetLength + "String_Node_Str");
  }
  if (this.alphabet.contains("String_Node_Str")) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  for (int i=0; i < this.seps.length(); i++) {
    int j=this.alphabet.indexOf(this.seps.charAt(i));
    if (j == -1) {
      this.seps=this.seps.substring(0,i) + "String_Node_Str" + this.seps.substring(i + 1);
    }
 else {
      this.alphabet=this.alphabet.substring(0,j) + "String_Node_Str" + this.alphabet.substring(j + 1);
    }
  }
  this.alphabet=this.alphabet.replaceAll("String_Node_Str","String_Node_Str");
  this.seps=this.seps.replaceAll("String_Node_Str","String_Node_Str");
  this.seps=this.consistentShuffle(this.seps,this.salt);
  double sepDiv=3.5;
  if ((this.seps.equals("String_Node_Str")) || ((this.alphabet.length() / this.seps.length()) > sepDiv)) {
    int seps_len=(int)Math.ceil(this.alphabet.length() / sepDiv);
    if (seps_len == 1) {
      seps_len++;
    }
    if (seps_len > this.seps.length()) {
      int diff=seps_len - this.seps.length();
      this.seps+=this.alphabet.substring(0,diff);
      this.alphabet=this.alphabet.substring(diff);
    }
 else {
      this.seps=this.seps.substring(0,seps_len);
    }
  }
  this.alphabet=this.consistentShuffle(this.alphabet,this.salt);
  int guardDiv=12;
  int guardCount=(int)Math.ceil((double)this.alphabet.length() / guardDiv);
  if (this.alphabet.length() < 3) {
    this.guards=this.seps.substring(0,guardCount);
    this.seps=this.seps.substring(guardCount);
  }
 else {
    this.guards=this.alphabet.substring(0,guardCount);
    this.alphabet=this.alphabet.substring(guardCount);
  }
}

Fixed version (ground truth):
public Hashids(String salt,int minHashLength,String alphabet){
  this.salt=salt;
  if (minHashLength < 0)   this.minHashLength=0;
 else   this.minHashLength=minHashLength;
  this.alphabet=alphabet;
  String uniqueAlphabet="String_Node_Str";
  for (int i=0; i < this.alphabet.length(); i++) {
    if (!uniqueAlphabet.contains("String_Node_Str" + this.alphabet.charAt(i))) {
      uniqueAlphabet+="String_Node_Str" + this.alphabet.charAt(i);
    }
  }
  this.alphabet=uniqueAlphabet;
  int minAlphabetLength=16;
  if (this.alphabet.length() < minAlphabetLength) {
    throw new IllegalArgumentException("String_Node_Str" + minAlphabetLength + "String_Node_Str");
  }
  if (this.alphabet.contains("String_Node_Str")) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  for (int i=0; i < this.seps.length(); i++) {
    int j=this.alphabet.indexOf(this.seps.charAt(i));
    if (j == -1) {
      this.seps=this.seps.substring(0,i) + "String_Node_Str" + this.seps.substring(i + 1);
    }
 else {
      this.alphabet=this.alphabet.substring(0,j) + "String_Node_Str" + this.alphabet.substring(j + 1);
    }
  }
  this.alphabet=this.alphabet.replaceAll("String_Node_Str","String_Node_Str");
  this.seps=this.seps.replaceAll("String_Node_Str","String_Node_Str");
  this.seps=this.consistentShuffle(this.seps,this.salt);
  double sepDiv=3.5;
  if ((this.seps.equals("String_Node_Str")) || (((float)this.alphabet.length() / this.seps.length()) > sepDiv)) {
    int seps_len=(int)Math.ceil(this.alphabet.length() / sepDiv);
    if (seps_len == 1) {
      seps_len++;
    }
    if (seps_len > this.seps.length()) {
      int diff=seps_len - this.seps.length();
      this.seps+=this.alphabet.substring(0,diff);
      this.alphabet=this.alphabet.substring(diff);
    }
 else {
      this.seps=this.seps.substring(0,seps_len);
    }
  }
  this.alphabet=this.consistentShuffle(this.alphabet,this.salt);
  int guardDiv=12;
  int guardCount=(int)Math.ceil((double)this.alphabet.length() / guardDiv);
  if (this.alphabet.length() < 3) {
    this.guards=this.seps.substring(0,guardCount);
    this.seps=this.seps.substring(guardCount);
  }
 else {
    this.guards=this.alphabet.substring(0,guardCount);
    this.alphabet=this.alphabet.substring(guardCount);
  }
}