Program: 30170
Project: 30170
Buggy source:
@SuppressWarnings("String_Node_Str") @Override public void read(Json json,JsonValue jsonData){
  if (SerializationHelper.getInstance().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"));
    }
    sounds=json.readValue("String_Node_Str",HashMap.class,SoundDesc.class,jsonData);
    if (sounds == null)     sounds=new HashMap<String,SoundDesc>();
    scenes=json.readValue("String_Node_Str",HashMap.class,Scene.class,jsonData);
    initScene=json.readValue("String_Node_Str",String.class,jsonData);
    if (initScene == null && scenes.size() > 0) {
      initScene=scenes.keySet().toArray(new String[0])[0];
    }
    for (    Scene s : scenes.values()) {
      s.resetCamera(width,height);
    }
    setCurrentScene(initScene);
    for (    Scene s : scenes.values()) {
      HashMap<String,Verb> verbs=s.getVerbManager().getVerbs();
      for (      Verb v : verbs.values()) {
        ArrayList<Action> actions=v.getActions();
        for (        Action act : actions) {
          try {
            if (act instanceof SoundAction) {
              String actor=ActionUtils.getStringValue(act,"String_Node_Str");
              String play=ActionUtils.getStringValue(act,"String_Node_Str");
              if (play != null) {
                SoundDesc sd=World.getInstance().getSounds().get(actor + "String_Node_Str" + play);
                if (sd != null)                 s.getSoundManager().addSoundToLoad(sd);
              }
            }
 else             if (act instanceof PlaySoundAction) {
              String sound=ActionUtils.getStringValue(act,"String_Node_Str");
              SoundDesc sd=World.getInstance().getSounds().get(sound);
              if (sd != null)               s.getSoundManager().addSoundToLoad(sd);
            }
          }
 catch (          NoSuchFieldException|IllegalArgumentException|IllegalAccessException e) {
          }
        }
      }
      for (      BaseActor a : s.getActors().values()) {
        if (a instanceof InteractiveActor) {
          HashMap<String,Verb> actorVerbs=((InteractiveActor)a).getVerbManager().getVerbs();
          for (          Verb v : actorVerbs.values()) {
            ArrayList<Action> actions=v.getActions();
            for (            Action act : actions) {
              try {
                if (act instanceof SoundAction) {
                  String actor=ActionUtils.getStringValue(act,"String_Node_Str");
                  String play=ActionUtils.getStringValue(act,"String_Node_Str");
                  if (play != null) {
                    SoundDesc sd=World.getInstance().getSounds().get(actor + "String_Node_Str" + play);
                    if (sd != null)                     s.getSoundManager().addSoundToLoad(sd);
                  }
                }
 else                 if (act instanceof PlaySoundAction) {
                  String sound=ActionUtils.getStringValue(act,"String_Node_Str");
                  SoundDesc sd=World.getInstance().getSounds().get(sound);
                  if (sd != null)                   s.getSoundManager().addSoundToLoad(sd);
                }
              }
 catch (              NoSuchFieldException|IllegalArgumentException|IllegalAccessException e) {
              }
            }
          }
        }
        if (a instanceof SpriteActor && ((SpriteActor)a).getRenderer() instanceof AnimationRenderer) {
          HashMap<String,AnimationDesc> anims=((AnimationRenderer)((SpriteActor)a).getRenderer()).getAnimations();
          for (          AnimationDesc ad : anims.values()) {
            if (ad.sound != null) {
              String sid=ad.sound;
              SoundDesc sd=World.getInstance().getSounds().get(sid);
              if (sd == null)               sid=a.getId() + "String_Node_Str" + sid;
              sd=World.getInstance().getSounds().get(sid);
              if (sd != null)               s.getSoundManager().addSoundToLoad(sd);
 else               EngineLogger.error(a.getId() + "String_Node_Str" + ad.sound+ "String_Node_Str"+ ad.id);
            }
          }
        }
      }
    }
  }
 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";
    currentChapter=json.readValue("String_Node_Str",String.class,jsonData);
    try {
      loadChapter(currentChapter);
    }
 catch (    IOException e1) {
      EngineLogger.error("String_Node_Str");
      return;
    }
    SerializationHelper.getInstance().setMode(Mode.STATE);
    currentScene=scenes.get(json.readValue("String_Node_Str",String.class,jsonData));
    if (jsonData.get("String_Node_Str") != null) {
      getInkManager().read(json,jsonData.get("String_Node_Str"));
    }
    for (    Scene s : scenes.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());
    }
    inventories=json.readValue("String_Node_Str",HashMap.class,Inventory.class,jsonData);
    currentInventory=json.readValue("String_Node_Str",String.class,jsonData);
    if (jsonData.get("String_Node_Str") != null) {
      getUIActors().read(json,jsonData.get("String_Node_Str"));
    }
    timeOfGame=json.readValue("String_Node_Str",long.class,0L,jsonData);
    cutMode=json.readValue("String_Node_Str",boolean.class,false,jsonData);
    verbs.read(json,jsonData);
    timers=json.readValue("String_Node_Str",Timers.class,jsonData);
    textManager=json.readValue("String_Node_Str",TextManager.class,jsonData);
    customProperties=json.readValue("String_Node_Str",HashMap.class,String.class,jsonData);
    customProperties.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)getCurrentScene().getActor(actorId,false);
      currentDialog=actor.getDialog(dialogId);
    }
    transition=json.readValue("String_Node_Str",Transition.class,jsonData);
    musicManager=json.readValue("String_Node_Str",MusicManager.class,jsonData);
    if (musicManager == null)     musicManager=new MusicManager();
    ActionCallbackQueue.read(json,jsonData);
    I18N.loadChapter(EngineAssetManager.MODEL_DIR + instance.currentChapter);
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override public void read(Json json,JsonValue jsonData){
  if (SerializationHelper.getInstance().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"));
    }
    sounds=json.readValue("String_Node_Str",HashMap.class,SoundDesc.class,jsonData);
    if (sounds == null)     sounds=new HashMap<String,SoundDesc>();
    scenes=json.readValue("String_Node_Str",HashMap.class,Scene.class,jsonData);
    initScene=json.readValue("String_Node_Str",String.class,jsonData);
    if (initScene == null && scenes.size() > 0) {
      initScene=scenes.keySet().toArray(new String[0])[0];
    }
    for (    Scene s : scenes.values()) {
      s.resetCamera(width,height);
    }
    setCurrentScene(initScene);
    for (    Scene s : scenes.values()) {
      HashMap<String,Verb> verbs=s.getVerbManager().getVerbs();
      for (      Verb v : verbs.values()) {
        ArrayList<Action> actions=v.getActions();
        for (        Action act : actions) {
          try {
            if (act instanceof SoundAction) {
              String actor=ActionUtils.getStringValue(act,"String_Node_Str");
              String play=ActionUtils.getStringValue(act,"String_Node_Str");
              if (play != null) {
                SoundDesc sd=World.getInstance().getSounds().get(actor + "String_Node_Str" + play);
                if (sd != null)                 s.getSoundManager().addSoundToLoad(sd);
              }
            }
 else             if (act instanceof PlaySoundAction) {
              String sound=ActionUtils.getStringValue(act,"String_Node_Str");
              SoundDesc sd=World.getInstance().getSounds().get(sound);
              if (sd != null)               s.getSoundManager().addSoundToLoad(sd);
            }
          }
 catch (          NoSuchFieldException|IllegalArgumentException|IllegalAccessException e) {
          }
        }
      }
      for (      BaseActor a : s.getActors().values()) {
        if (a instanceof InteractiveActor) {
          HashMap<String,Verb> actorVerbs=((InteractiveActor)a).getVerbManager().getVerbs();
          for (          Verb v : actorVerbs.values()) {
            ArrayList<Action> actions=v.getActions();
            for (            Action act : actions) {
              try {
                if (act instanceof SoundAction) {
                  String actor=ActionUtils.getStringValue(act,"String_Node_Str");
                  String play=ActionUtils.getStringValue(act,"String_Node_Str");
                  if (play != null) {
                    SoundDesc sd=World.getInstance().getSounds().get(actor + "String_Node_Str" + play);
                    if (sd != null)                     s.getSoundManager().addSoundToLoad(sd);
                  }
                }
 else                 if (act instanceof PlaySoundAction) {
                  String sound=ActionUtils.getStringValue(act,"String_Node_Str");
                  SoundDesc sd=World.getInstance().getSounds().get(sound);
                  if (sd != null)                   s.getSoundManager().addSoundToLoad(sd);
                }
              }
 catch (              NoSuchFieldException|IllegalArgumentException|IllegalAccessException e) {
              }
            }
          }
        }
        if (a instanceof SpriteActor && ((SpriteActor)a).getRenderer() instanceof AnimationRenderer) {
          HashMap<String,AnimationDesc> anims=((AnimationRenderer)((SpriteActor)a).getRenderer()).getAnimations();
          for (          AnimationDesc ad : anims.values()) {
            if (ad.sound != null) {
              String sid=ad.sound;
              SoundDesc sd=World.getInstance().getSounds().get(sid);
              if (sd == null)               sid=a.getId() + "String_Node_Str" + sid;
              sd=World.getInstance().getSounds().get(sid);
              if (sd != null)               s.getSoundManager().addSoundToLoad(sd);
 else               EngineLogger.error(a.getId() + "String_Node_Str" + ad.sound+ "String_Node_Str"+ ad.id);
            }
          }
        }
      }
    }
  }
 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";
    currentChapter=json.readValue("String_Node_Str",String.class,jsonData);
    try {
      loadChapter(currentChapter);
    }
 catch (    IOException e1) {
      EngineLogger.error("String_Node_Str");
      return;
    }
    SerializationHelper.getInstance().setMode(Mode.STATE);
    currentScene=scenes.get(json.readValue("String_Node_Str",String.class,jsonData));
    if (jsonData.get("String_Node_Str") != null) {
      getInkManager().read(json,jsonData.get("String_Node_Str"));
    }
    inventories=json.readValue("String_Node_Str",HashMap.class,Inventory.class,jsonData);
    currentInventory=json.readValue("String_Node_Str",String.class,jsonData);
    if (jsonData.get("String_Node_Str") != null) {
      getUIActors().read(json,jsonData.get("String_Node_Str"));
    }
    for (    Scene s : scenes.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());
    }
    timeOfGame=json.readValue("String_Node_Str",long.class,0L,jsonData);
    cutMode=json.readValue("String_Node_Str",boolean.class,false,jsonData);
    verbs.read(json,jsonData);
    timers=json.readValue("String_Node_Str",Timers.class,jsonData);
    textManager=json.readValue("String_Node_Str",TextManager.class,jsonData);
    customProperties=json.readValue("String_Node_Str",HashMap.class,String.class,jsonData);
    customProperties.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)getCurrentScene().getActor(actorId,false);
      currentDialog=actor.getDialog(dialogId);
    }
    transition=json.readValue("String_Node_Str",Transition.class,jsonData);
    musicManager=json.readValue("String_Node_Str",MusicManager.class,jsonData);
    if (musicManager == null)     musicManager=new MusicManager();
    ActionCallbackQueue.read(json,jsonData);
    I18N.loadChapter(EngineAssetManager.MODEL_DIR + instance.currentChapter);
  }
}