Program: 151281
Project: 151281
Buggy source:
public boolean performCheck(String permission,String worldName){
  if (permission.equals("String_Node_Str")) {
    return PermissionsEx.isAvailable();
  }
  try {
    PermissionUser user=PermissionsEx.getUser(this.player);
    if (user == null) {
      return super.hasPermission(permission);
    }
    String expression=user.getMatchingExpression(permission.toLowerCase(),worldName);
    if (expression != null || this.strictMode) {
      if (user.isDebug()) {
        Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str"+ (expression == null ? "String_Node_Str" : "String_Node_Str" + expression + "String_Node_Str"));
      }
      return user.explainExpression(expression);
    }
    if (this.bridge.isEnableParentNodes()) {
      Map<String,Boolean> parentNodes=this.bridge.getChildPermissions().get(permission.toLowerCase());
      if (parentNodes != null) {
        for (        String parentPermission : parentNodes.keySet()) {
          if (this.hasPermission(parentPermission)) {
            if (user.isDebug()) {
              Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str"+ (expression == null ? "String_Node_Str" : "String_Node_Str" + parentPermission + "String_Node_Str"));
            }
            return parentNodes.get(parentPermission).booleanValue();
          }
        }
      }
    }
    if (super.hasPermission(permission)) {
      if (user.isDebug()) {
        Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str");
      }
      return true;
    }
    if (user.isDebug()) {
      Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str");
    }
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  return false;
}

Fixed version (ground truth):
public boolean performCheck(String permission,String worldName){
  try {
    PermissionUser user=PermissionsEx.getUser(this.player);
    if (user == null) {
      return super.hasPermission(permission);
    }
    String expression=user.getMatchingExpression(permission.toLowerCase(),worldName);
    if (expression != null || this.strictMode) {
      if (user.isDebug()) {
        Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str"+ (expression == null ? "String_Node_Str" : "String_Node_Str" + expression + "String_Node_Str"));
      }
      return user.explainExpression(expression);
    }
    if (this.bridge.isEnableParentNodes()) {
      Map<String,Boolean> parentNodes=this.bridge.getChildPermissions().get(permission.toLowerCase());
      if (parentNodes != null) {
        for (        String parentPermission : parentNodes.keySet()) {
          if (this.hasPermission(parentPermission)) {
            if (user.isDebug()) {
              Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str"+ (expression == null ? "String_Node_Str" : "String_Node_Str" + parentPermission + "String_Node_Str"));
            }
            return parentNodes.get(parentPermission).booleanValue();
          }
        }
      }
    }
    if (super.hasPermission(permission)) {
      if (user.isDebug()) {
        Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str");
      }
      return true;
    }
    if (user.isDebug()) {
      Logger.getLogger("String_Node_Str").info("String_Node_Str" + user.getName() + "String_Node_Str"+ permission+ "String_Node_Str");
    }
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  return false;
}