Program: 40663
Project: 40663
Buggy source:
private void proposeRule(Path p) throws IOException {
  if (Files.isDirectory(p)) {
    for (    Path pp : Files.newDirectoryStream(p)) {
      try {
        proposeRule(pp);
      }
 catch (      IOException e) {
        e.printStackTrace();
      }
    }
  }
 else {
    BufferedReader reader=Files.newBufferedReader(p,Charsets.UTF_8);
    try {
      JsonObject json=JsonUtils.fromJson(GSON,reader,JsonObject.class);
      if (json != null) {
        if (json.has("String_Node_Str")) {
          for (          JsonElement element : json.get("String_Node_Str").getAsJsonArray()) {
            if (element.isJsonObject()) {
              try {
                UCWBlockRule rule=new UCWBlockRule(element.getAsJsonObject());
                if (rule.isValid()) {
                  String fbName=rule.fromBlock.getRegistryName().toString();
                  if (!C_ENABLED.containsKey(fbName)) {
                    Property prop=new Property(fbName,"String_Node_Str",Property.Type.BOOLEAN);
                    C_ENABLED.put(fbName,prop);
                  }
                  if (C_ENABLED.get(fbName).getBoolean()) {
                    if (BLOCK_RULES.contains(rule)) {
                      LOGGER.warn("String_Node_Str" + rule);
                    }
 else {
                      BLOCK_RULES.add(rule);
                    }
                  }
                }
              }
 catch (              Exception e) {
                e.printStackTrace();
              }
            }
          }
        }
        if (json.has("String_Node_Str")) {
          for (          JsonElement element : json.get("String_Node_Str").getAsJsonArray()) {
            if (element.isJsonObject()) {
              try {
                UCWGroupRule rule=new UCWGroupRule(element.getAsJsonObject());
                String fbName=rule.groupName;
                if (GROUP_RULE_NAMES.contains(fbName)) {
                  LOGGER.warn("String_Node_Str" + fbName + "String_Node_Str");
                }
 else {
                  GROUP_RULE_NAMES.add(fbName);
                }
                if (!C_ENABLED_GROUPS.containsKey(fbName)) {
                  Property prop=new Property(fbName,"String_Node_Str",Property.Type.BOOLEAN);
                  C_ENABLED_GROUPS.put(fbName,prop);
                }
                if (C_ENABLED_GROUPS.get(fbName).getBoolean()) {
                  GROUP_RULES.add(rule);
                }
              }
 catch (              Exception e) {
                e.printStackTrace();
              }
            }
          }
        }
      }
    }
 catch (    Exception e) {
      e.printStackTrace();
    }
  }
}

Fixed version (ground truth):
private void proposeRule(Path p) throws IOException {
  if (Files.isDirectory(p)) {
    for (    Path pp : Files.newDirectoryStream(p)) {
      try {
        proposeRule(pp);
      }
 catch (      IOException e) {
        e.printStackTrace();
      }
    }
  }
 else {
    BufferedReader reader=Files.newBufferedReader(p,Charsets.UTF_8);
    try {
      JsonObject json=JsonUtils.fromJson(GSON,reader,JsonObject.class);
      if (json != null) {
        if (json.has("String_Node_Str")) {
          for (          JsonElement element : json.get("String_Node_Str").getAsJsonArray()) {
            if (element.isJsonObject()) {
              try {
                UCWBlockRule rule=new UCWBlockRule(element.getAsJsonObject());
                if (rule.isValid()) {
                  String fbName=rule.fromBlock.getRegistryName().toString();
                  if (!C_ENABLED.containsKey(fbName)) {
                    Property prop=new Property(fbName,"String_Node_Str",Property.Type.BOOLEAN);
                    C_ENABLED.put(fbName,prop);
                  }
                  if (C_ENABLED.get(fbName).getBoolean()) {
                    if (BLOCK_RULES.contains(rule)) {
                      LOGGER.warn("String_Node_Str" + rule);
                    }
 else {
                      BLOCK_RULES.add(rule);
                    }
                  }
                }
              }
 catch (              Exception e) {
                e.printStackTrace();
              }
            }
          }
        }
        if (json.has("String_Node_Str")) {
          for (          JsonElement element : json.get("String_Node_Str").getAsJsonArray()) {
            if (element.isJsonObject()) {
              try {
                UCWGroupRule rule=new UCWGroupRule(element.getAsJsonObject());
                String fbName=rule.groupName;
                if (GROUP_RULE_NAMES.contains(fbName)) {
                  LOGGER.warn("String_Node_Str" + fbName + "String_Node_Str");
                }
 else {
                  GROUP_RULE_NAMES.add(fbName);
                }
                if (!C_ENABLED_GROUPS.containsKey(fbName)) {
                  Property prop=new Property(fbName,"String_Node_Str",Property.Type.BOOLEAN);
                  C_ENABLED_GROUPS.put(fbName,prop);
                }
                if (C_ENABLED_GROUPS.get(fbName).getBoolean()) {
                  GROUP_RULES.add(rule);
                }
              }
 catch (              Exception e) {
                e.printStackTrace();
              }
            }
          }
        }
      }
    }
 catch (    Exception e) {
      UnlimitedChiselWorks.LOGGER.error("String_Node_Str" + p.toString(),e);
    }
  }
}