Program: 178143
Project: 178143
Buggy source:
public void onSignChange(SignChangeEvent event){
  Block signBlock=event.getBlock();
  String[] line=event.getLines();
  boolean isAlmostReady=uSign.isValidPreparedSign(line);
  Player player=event.getPlayer();
  ItemStack stock=Items.getItemStack(line[3]);
  Material mat=stock == null ? null : stock.getType();
  boolean playerIsAdmin=Permission.has(player,Permission.ADMIN);
  if (isAlmostReady) {
    if (mat == null) {
      player.sendMessage(Config.getLocal(Language.INCORRECT_ITEM_ID));
      dropSign(event);
      return;
    }
    if (!canCreateShop(player,mat.getId())) {
      player.sendMessage(Config.getLocal(Language.YOU_CANNOT_CREATE_SHOP));
      dropSign(event);
      return;
    }
  }
 else {
    if (restrictedSign.isRestricted(event.getLines())) {
      if (!playerIsAdmin) {
        player.sendMessage(Config.getLocal(Language.ACCESS_DENIED));
        dropSign(event);
        return;
      }
      Block secondSign=signBlock.getRelative(BlockFace.DOWN);
      if (!uSign.isSign(secondSign) || !uSign.isValid((Sign)secondSign.getState()))       dropSign(event);
    }
    return;
  }
  if (formatFirstLine(line[0],player))   event.setLine(0,uLongName.stripName(player.getName()));
  String thirdLine=formatThirdLine(line[2]);
  if (thirdLine == null) {
    dropSign(event);
    player.sendMessage(Config.getLocal(Language.YOU_CANNOT_CREATE_SHOP));
    return;
  }
  event.setLine(2,thirdLine);
  String[] split=line[3].split("String_Node_Str");
  if (uNumber.isInteger(split[0])) {
    String materialLine=mat.name();
    if (split.length == 2) {
      int maxLength=(15 - split[1].length() - 1);
      if (materialLine.length() > maxLength)       materialLine=materialLine.substring(0,maxLength);
      materialLine=materialLine + ':' + split[1];
    }
    event.setLine(3,materialLine);
  }
  Chest chest=uBlock.findChest(signBlock);
  line=event.getLines();
  boolean isAdminShop=uSign.isAdminShop(line[0]);
  if (!isAdminShop) {
    if (chest == null) {
      player.sendMessage(Config.getLocal(Language.NO_CHEST_DETECTED));
      dropSign(event);
      return;
    }
 else     if (!playerIsAdmin) {
      if (!Security.canPlaceSign(player,signBlock)) {
        player.sendMessage(Config.getLocal(Language.ANOTHER_SHOP_DETECTED));
        dropSign(event);
        return;
      }
      Block chestBlock=chest.getBlock();
      boolean canAccess=!Security.isProtected(chestBlock) || !Security.canAccess(player,chestBlock);
      if (!(Security.protection instanceof Default) && canAccess) {
        Default protection=new Default();
        if (protection.isProtected(chestBlock) && !protection.canAccess(player,chestBlock))         canAccess=false;
      }
      if (!canAccess) {
        player.sendMessage(Config.getLocal(Language.CANNOT_ACCESS_THE_CHEST));
        dropSign(event);
        return;
      }
    }
  }
  float shopCreationPrice=Config.getFloat(Property.SHOP_CREATION_PRICE);
  if (shopCreationPrice != 0 && !isAdminShop) {
    if (!Economy.hasEnough(player.getName(),shopCreationPrice)) {
      player.sendMessage(Config.getLocal(Language.NOT_ENOUGH_MONEY));
      dropSign(event);
      return;
    }
    Economy.substract(player.getName(),shopCreationPrice);
  }
  if (Config.getBoolean(Property.PROTECT_SIGN_WITH_LWC)) {
    Security.protect(player.getName(),signBlock);
  }
  if (Config.getBoolean(Property.PROTECT_CHEST_WITH_LWC) && chest != null && Security.protect(player.getName(),chest.getBlock())) {
    player.sendMessage(Config.getLocal(Language.PROTECTED_SHOP));
  }
  uLongName.saveName(player.getName());
  player.sendMessage(Config.getLocal(Language.SHOP_CREATED));
}

Fixed version (ground truth):
public void onSignChange(SignChangeEvent event){
  Block signBlock=event.getBlock();
  String[] line=event.getLines();
  boolean isAlmostReady=uSign.isValidPreparedSign(line);
  Player player=event.getPlayer();
  ItemStack stock=Items.getItemStack(line[3]);
  Material mat=stock == null ? null : stock.getType();
  boolean playerIsAdmin=Permission.has(player,Permission.ADMIN);
  if (isAlmostReady) {
    if (mat == null) {
      player.sendMessage(Config.getLocal(Language.INCORRECT_ITEM_ID));
      dropSign(event);
      return;
    }
    if (!canCreateShop(player,mat.getId())) {
      player.sendMessage(Config.getLocal(Language.YOU_CANNOT_CREATE_SHOP));
      dropSign(event);
      return;
    }
  }
 else {
    if (restrictedSign.isRestricted(event.getLines())) {
      if (!playerIsAdmin) {
        player.sendMessage(Config.getLocal(Language.ACCESS_DENIED));
        dropSign(event);
        return;
      }
      Block secondSign=signBlock.getRelative(BlockFace.DOWN);
      if (!uSign.isSign(secondSign) || !uSign.isValid((Sign)secondSign.getState()))       dropSign(event);
    }
    return;
  }
  if (formatFirstLine(line[0],player))   event.setLine(0,uLongName.stripName(player.getName()));
  String thirdLine=formatThirdLine(line[2]);
  if (thirdLine == null) {
    dropSign(event);
    player.sendMessage(Config.getLocal(Language.YOU_CANNOT_CREATE_SHOP));
    return;
  }
  event.setLine(2,thirdLine);
  String[] split=line[3].split("String_Node_Str");
  if (uNumber.isInteger(split[0])) {
    String materialLine=mat.name();
    if (split.length == 2) {
      int maxLength=(15 - split[1].length() - 1);
      if (materialLine.length() > maxLength)       materialLine=materialLine.substring(0,maxLength);
      materialLine=materialLine + ':' + split[1];
    }
    event.setLine(3,materialLine);
  }
  Chest chest=uBlock.findChest(signBlock);
  line=event.getLines();
  boolean isAdminShop=uSign.isAdminShop(line[0]);
  if (!isAdminShop) {
    if (chest == null) {
      player.sendMessage(Config.getLocal(Language.NO_CHEST_DETECTED));
      dropSign(event);
      return;
    }
 else     if (!playerIsAdmin) {
      if (!Security.canPlaceSign(player,signBlock)) {
        player.sendMessage(Config.getLocal(Language.ANOTHER_SHOP_DETECTED));
        dropSign(event);
        return;
      }
      Block chestBlock=chest.getBlock();
      boolean canAccess=!Security.isProtected(chestBlock) || Security.canAccess(player,chestBlock);
      if (!(Security.protection instanceof Default) && canAccess) {
        Default protection=new Default();
        if (protection.isProtected(chestBlock) && !protection.canAccess(player,chestBlock))         canAccess=false;
      }
      if (!canAccess) {
        player.sendMessage(Config.getLocal(Language.CANNOT_ACCESS_THE_CHEST));
        dropSign(event);
        return;
      }
    }
  }
  float shopCreationPrice=Config.getFloat(Property.SHOP_CREATION_PRICE);
  if (shopCreationPrice != 0 && !isAdminShop) {
    if (!Economy.hasEnough(player.getName(),shopCreationPrice)) {
      player.sendMessage(Config.getLocal(Language.NOT_ENOUGH_MONEY));
      dropSign(event);
      return;
    }
    Economy.substract(player.getName(),shopCreationPrice);
  }
  if (Config.getBoolean(Property.PROTECT_SIGN_WITH_LWC)) {
    Security.protect(player.getName(),signBlock);
  }
  if (Config.getBoolean(Property.PROTECT_CHEST_WITH_LWC) && chest != null && Security.protect(player.getName(),chest.getBlock())) {
    player.sendMessage(Config.getLocal(Language.PROTECTED_SHOP));
  }
  uLongName.saveName(player.getName());
  player.sendMessage(Config.getLocal(Language.SHOP_CREATED));
}