Program: 30144
Project: 30144
Buggy source:
@Override public void read(Json json,JsonValue jsonData){
  BladeJson bjson=(BladeJson)json;
  if (bjson.getMode() == Mode.MODEL) {
    String version=json.readValue(Config.BLADE_ENGINE_VERSION_PROP,String.class,jsonData);
    if (version != null && !version.equals(Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"))) {
      EngineLogger.debug("String_Node_Str" + version + "String_Node_Str"+ Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"));
    }
    JsonValue jsonSounds=jsonData.get("String_Node_Str");
    HashMap<String,SoundDesc> sounds=w.getSounds();
    for (int i=0; i < jsonSounds.size; i++) {
      JsonValue jsonValue=jsonSounds.get(i);
      SoundDesc s=json.readValue(SoundDesc.class,jsonValue);
      sounds.put(jsonValue.name,s);
    }
    JsonValue jsonScenes=jsonData.get("String_Node_Str");
    Map<String,Scene> scenes=w.getScenes();
    for (int i=0; i < jsonScenes.size; i++) {
      JsonValue jsonValue=jsonScenes.get(i);
      Scene s=new Scene(w);
      scenes.put(jsonValue.name,s);
      s.read(json,jsonValue);
    }
    w.setInitScene(json.readValue("String_Node_Str",String.class,jsonData));
    if (w.getInitScene() == null && w.getScenes().size() > 0) {
      w.setInitScene(w.getScenes().keySet().toArray(new String[0])[0]);
    }
    for (    Scene s : w.getScenes().values()) {
      s.resetCamera(w.getWidth(),w.getHeight());
    }
    w.setCurrentScene(w.getScenes().get(w.getInitScene()));
    cacheSounds();
  }
 else {
    String bladeVersion=json.readValue(Config.BLADE_ENGINE_VERSION_PROP,String.class,jsonData);
    if (bladeVersion != null && !bladeVersion.equals(Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"))) {
      EngineLogger.debug("String_Node_Str" + bladeVersion + "String_Node_Str"+ Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"));
    }
    String version=json.readValue(Config.VERSION_PROP,String.class,jsonData);
    if (version == null)     version="String_Node_Str";
    String currentChapter=json.readValue("String_Node_Str",String.class,jsonData);
    try {
      loadChapter(currentChapter);
    }
 catch (    IOException e1) {
      EngineLogger.error("String_Node_Str");
      return;
    }
    w.setCurrentScene(w.getScene(json.readValue("String_Node_Str",String.class,jsonData)));
    if (jsonData.get("String_Node_Str") != null) {
      w.getInkManager().read(json,jsonData.get("String_Node_Str"));
    }
    w.setCurrentInventory(json.readValue("String_Node_Str",String.class,jsonData));
    JsonValue jsonInventories=jsonData.get("String_Node_Str");
    for (int i=0; i < jsonInventories.size; i++) {
      JsonValue jsonValue=jsonInventories.get(i);
      Inventory inv=new Inventory();
      w.getInvetories().put(jsonValue.name,inv);
      inv.read(json,jsonValue);
    }
    if (jsonData.get("String_Node_Str") != null) {
      w.getUIActors().read(json,jsonData.get("String_Node_Str"));
    }
    for (    Scene s : w.getScenes().values()) {
      JsonValue jsonValue=jsonData.get("String_Node_Str").get(s.getId());
      if (jsonValue != null)       s.read(json,jsonValue);
 else       EngineLogger.debug("String_Node_Str" + s.getId());
    }
    w.setTimeOfGame(json.readValue("String_Node_Str",long.class,0L,jsonData));
    w.setCutMode(json.readValue("String_Node_Str",boolean.class,false,jsonData));
    w.getVerbManager().read(json,jsonData);
    JsonValue jsonProperties=jsonData.get("String_Node_Str");
    HashMap<String,String> props=w.getCustomProperties();
    for (int i=0; i < jsonProperties.size; i++) {
      JsonValue jsonValue=jsonProperties.get(i);
      props.put(jsonValue.name,json.readValue("String_Node_Str",String.class,jsonData));
    }
    props.put(WorldProperties.SAVED_GAME_VERSION.toString(),version);
    String actorId=json.readValue("String_Node_Str",String.class,jsonData);
    String dialogId=json.readValue("String_Node_Str",String.class,jsonData);
    if (dialogId != null) {
      CharacterActor actor=(CharacterActor)w.getCurrentScene().getActor(actorId,false);
      w.setCurrentDialog(actor.getDialog(dialogId));
    }
    w.getTransition().read(json,jsonData.get("String_Node_Str"));
    w.getMusicManager().read(json,jsonData.get("String_Node_Str"));
    I18N.loadChapter(EngineAssetManager.MODEL_DIR + w.getCurrentChapter());
  }
}

Fixed version (ground truth):
@Override public void read(Json json,JsonValue jsonData){
  BladeJson bjson=(BladeJson)json;
  if (bjson.getMode() == Mode.MODEL) {
    String version=json.readValue(Config.BLADE_ENGINE_VERSION_PROP,String.class,jsonData);
    if (version != null && !version.equals(Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"))) {
      EngineLogger.debug("String_Node_Str" + version + "String_Node_Str"+ Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"));
    }
    JsonValue jsonSounds=jsonData.get("String_Node_Str");
    HashMap<String,SoundDesc> sounds=w.getSounds();
    for (int i=0; i < jsonSounds.size; i++) {
      JsonValue jsonValue=jsonSounds.get(i);
      SoundDesc s=json.readValue(SoundDesc.class,jsonValue);
      sounds.put(jsonValue.name,s);
    }
    JsonValue jsonScenes=jsonData.get("String_Node_Str");
    Map<String,Scene> scenes=w.getScenes();
    for (int i=0; i < jsonScenes.size; i++) {
      JsonValue jsonValue=jsonScenes.get(i);
      Scene s=new Scene(w);
      scenes.put(jsonValue.name,s);
      s.read(json,jsonValue);
    }
    w.setInitScene(json.readValue("String_Node_Str",String.class,jsonData));
    if (w.getInitScene() == null && w.getScenes().size() > 0) {
      w.setInitScene(w.getScenes().keySet().toArray(new String[0])[0]);
    }
    for (    Scene s : w.getScenes().values()) {
      s.resetCamera(w.getWidth(),w.getHeight());
    }
    w.setCurrentScene(w.getScenes().get(w.getInitScene()),true);
    cacheSounds();
  }
 else {
    String bladeVersion=json.readValue(Config.BLADE_ENGINE_VERSION_PROP,String.class,jsonData);
    if (bladeVersion != null && !bladeVersion.equals(Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"))) {
      EngineLogger.debug("String_Node_Str" + bladeVersion + "String_Node_Str"+ Config.getProperty(Config.BLADE_ENGINE_VERSION_PROP,"String_Node_Str"));
    }
    String version=json.readValue(Config.VERSION_PROP,String.class,jsonData);
    if (version == null)     version="String_Node_Str";
    String currentChapter=json.readValue("String_Node_Str",String.class,jsonData);
    try {
      loadChapter(currentChapter);
    }
 catch (    IOException e1) {
      EngineLogger.error("String_Node_Str");
      return;
    }
    w.setCurrentScene(w.getScene(json.readValue("String_Node_Str",String.class,jsonData)),false);
    if (jsonData.get("String_Node_Str") != null) {
      w.getInkManager().read(json,jsonData.get("String_Node_Str"));
    }
    w.setCurrentInventory(json.readValue("String_Node_Str",String.class,jsonData));
    JsonValue jsonInventories=jsonData.get("String_Node_Str");
    for (int i=0; i < jsonInventories.size; i++) {
      JsonValue jsonValue=jsonInventories.get(i);
      Inventory inv=new Inventory();
      w.getInvetories().put(jsonValue.name,inv);
      inv.read(json,jsonValue);
    }
    if (jsonData.get("String_Node_Str") != null) {
      w.getUIActors().read(json,jsonData.get("String_Node_Str"));
    }
    for (    Scene s : w.getScenes().values()) {
      JsonValue jsonValue=jsonData.get("String_Node_Str").get(s.getId());
      if (jsonValue != null)       s.read(json,jsonValue);
 else       EngineLogger.debug("String_Node_Str" + s.getId());
    }
    w.setTimeOfGame(json.readValue("String_Node_Str",long.class,0L,jsonData));
    w.setCutMode(json.readValue("String_Node_Str",boolean.class,false,jsonData));
    w.getVerbManager().read(json,jsonData);
    JsonValue jsonProperties=jsonData.get("String_Node_Str");
    HashMap<String,String> props=w.getCustomProperties();
    for (int i=0; i < jsonProperties.size; i++) {
      JsonValue jsonValue=jsonProperties.get(i);
      props.put(jsonValue.name,json.readValue("String_Node_Str",String.class,jsonData));
    }
    props.put(WorldProperties.SAVED_GAME_VERSION.toString(),version);
    String actorId=json.readValue("String_Node_Str",String.class,jsonData);
    String dialogId=json.readValue("String_Node_Str",String.class,jsonData);
    if (dialogId != null) {
      CharacterActor actor=(CharacterActor)w.getCurrentScene().getActor(actorId,false);
      w.setCurrentDialog(actor.getDialog(dialogId));
    }
    w.getTransition().read(json,jsonData.get("String_Node_Str"));
    w.getMusicManager().read(json,jsonData.get("String_Node_Str"));
    I18N.loadChapter(EngineAssetManager.MODEL_DIR + w.getCurrentChapter());
  }
}