Program: 171235
Project: 171235
Buggy source:
public String getTooltipBlockingList(){
  SB=new StringBuilder();
  if (perksRequired != null) {
    for (    Perk p : perksRequired) {
      if (Main.game.getPlayer().hasTrait(p,true)) {
        SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.PERK.toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(p.getName(Main.game.getPlayer())));
      }
 else {
        SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.PERK.toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(p.getName(Main.game.getPlayer())));
      }
    }
  }
  if (femininityRequired != null) {
    if (isFemininityInRange()) {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ femininityRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(femininityRequired.getName(false))+ "String_Node_Str");
    }
 else {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ femininityRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(femininityRequired.getName(false))+ "String_Node_Str");
    }
  }
  if (raceRequired != null) {
    if (isRequiredRace()) {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ raceRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(raceRequired.getName())+ "String_Node_Str");
    }
 else {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ raceRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(raceRequired.getName())+ "String_Node_Str");
    }
  }
  if (sexAreaAccessRequiredForPerformer != null && characterPerformingSexAction != null) {
    boolean penetrationAccess=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForPerformer) {
      if (!characterPerformingSexAction.isSexAreaExposed(sArea)) {
        penetrationAccess=false;
      }
    }
    boolean penetrationFree=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForPerformer) {
      if (!sArea.isFree(characterPerformingSexAction)) {
        penetrationFree=false;
      }
    }
    for (    SexAreaInterface sArea : sexAreaAccessRequiredForPerformer) {
      String penetrationName=Util.capitaliseSentence(sArea.getName(characterPerformingSexAction));
      String accessText=(penetrationAccess ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
      String freeText=(penetrationFree ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
      String targetName=(characterPerformingSexAction.isPlayer() ? "String_Node_Str" : UtilText.parse(characterPerformingSexAction,"String_Node_Str"));
      if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION_AND_EXPOSED || getSexActionType() == SexActionType.START_ONGOING) {
        if (penetrationAccess && penetrationFree) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
      }
 else       if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION) {
        if (penetrationFree) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
      }
 else {
        if (penetrationAccess) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
        }
      }
    }
  }
  if (sexAreaAccessRequiredForTargeted != null && characterTargetedForSexAction != null) {
    boolean orificeAccess=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForTargeted) {
      if (!characterTargetedForSexAction.isSexAreaExposed(sArea)) {
        orificeAccess=false;
      }
    }
    boolean orificeFree=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForTargeted) {
      if (!sArea.isFree(characterTargetedForSexAction)) {
        orificeFree=false;
      }
    }
    for (    SexAreaInterface sArea : sexAreaAccessRequiredForTargeted) {
      String orificeName=Util.capitaliseSentence(sArea.getName(characterTargetedForSexAction));
      String accessText=(orificeAccess ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
      String freeText=(orificeFree ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
      String targetName=(characterTargetedForSexAction.isPlayer() ? "String_Node_Str" : UtilText.parse(characterTargetedForSexAction,"String_Node_Str"));
      if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION_AND_EXPOSED || getSexActionType() == SexActionType.START_ONGOING) {
        if (orificeAccess && orificeFree) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
      }
 else       if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION) {
        if (orificeFree) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
      }
 else {
        if (orificeAccess) {
          SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
 else {
          SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
        }
      }
    }
  }
  return SB.toString();
}

Fixed version (ground truth):
public String getTooltipBlockingList(){
  SB=new StringBuilder();
  if (perksRequired != null) {
    for (    Perk p : perksRequired) {
      if (Main.game.getPlayer().hasTrait(p,true)) {
        SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.PERK.toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(p.getName(Main.game.getPlayer())));
      }
 else {
        SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.PERK.toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(p.getName(Main.game.getPlayer())));
      }
    }
  }
  if (femininityRequired != null) {
    if (isFemininityInRange()) {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ femininityRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(femininityRequired.getName(false))+ "String_Node_Str");
    }
 else {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ femininityRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(femininityRequired.getName(false))+ "String_Node_Str");
    }
  }
  if (raceRequired != null) {
    if (isRequiredRace()) {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ raceRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(raceRequired.getName())+ "String_Node_Str");
    }
 else {
      SB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ raceRequired.getColour().toWebHexString()+ "String_Node_Str"+ Util.capitaliseSentence(raceRequired.getName())+ "String_Node_Str");
    }
  }
  if (sexAreaAccessRequiredForPerformer != null && characterPerformingSexAction != null) {
    boolean penetrationAccess=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForPerformer) {
      if (sArea != null && !characterPerformingSexAction.isSexAreaExposed(sArea)) {
        penetrationAccess=false;
      }
    }
    boolean penetrationFree=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForPerformer) {
      if (sArea != null && !sArea.isFree(characterPerformingSexAction)) {
        penetrationFree=false;
      }
    }
    for (    SexAreaInterface sArea : sexAreaAccessRequiredForPerformer) {
      if (sArea != null) {
        String penetrationName=Util.capitaliseSentence(sArea.getName(characterPerformingSexAction));
        String accessText=(penetrationAccess ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
        String freeText=(penetrationFree ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
        String targetName=(characterPerformingSexAction.isPlayer() ? "String_Node_Str" : UtilText.parse(characterPerformingSexAction,"String_Node_Str"));
        if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION_AND_EXPOSED || getSexActionType() == SexActionType.START_ONGOING) {
          if (penetrationAccess && penetrationFree) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
        }
 else         if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION) {
          if (penetrationFree) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
        }
 else {
          if (penetrationAccess) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ penetrationName);
          }
        }
      }
    }
  }
  if (sexAreaAccessRequiredForTargeted != null && characterTargetedForSexAction != null) {
    boolean orificeAccess=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForTargeted) {
      if (sArea != null && !characterTargetedForSexAction.isSexAreaExposed(sArea)) {
        orificeAccess=false;
      }
    }
    boolean orificeFree=true;
    for (    SexAreaInterface sArea : this.sexAreaAccessRequiredForTargeted) {
      if (sArea != null && !sArea.isFree(characterTargetedForSexAction)) {
        orificeFree=false;
      }
    }
    for (    SexAreaInterface sArea : sexAreaAccessRequiredForTargeted) {
      if (sArea != null) {
        String orificeName=Util.capitaliseSentence(sArea.getName(characterTargetedForSexAction));
        String accessText=(orificeAccess ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
        String freeText=(orificeFree ? "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str");
        String targetName=(characterTargetedForSexAction.isPlayer() ? "String_Node_Str" : UtilText.parse(characterTargetedForSexAction,"String_Node_Str"));
        if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION_AND_EXPOSED || getSexActionType() == SexActionType.START_ONGOING) {
          if (orificeAccess && orificeFree) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
        }
 else         if (getSexActionType() == SexActionType.REQUIRES_NO_PENETRATION) {
          if (orificeFree) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ freeText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
        }
 else {
          if (orificeAccess) {
            SB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
 else {
            SB.append("String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ accessText+ "String_Node_Str"+ targetName+ "String_Node_Str"+ orificeName);
          }
        }
      }
    }
  }
  return SB.toString();
}