Program: 174841
Project: 174841
Buggy source:
@Override public void onSetup(File log,File world){
  try {
    connection=new InjectionConnection(log.toPath(),world.toPath(),"String_Node_Str");
  }
 catch (  IOException|InterruptedException ex) {
    throw new UndeclaredThrowableException(ex);
  }
  connection.getLogObserver().setLogCheckFrequency(100,MILLISECONDS);
  connection.setFlushFrequency(50,MILLISECONDS);
  connection.getLogObserver().addLogListener(l -> {
    String text=l.getLine();
    String leadingText="String_Node_Str";
    if (!text.startsWith("String_Node_Str",11) || !text.contains(leadingText))     return;
    text=text.substring(text.indexOf(leadingText));
    String username=text.substring(leadingText.length(),text.indexOf(' ',leadingText.length()));
    int stage=-1;
    if (text.indexOf('1',leadingText.length() + username.length()) >= 0)     stage=1;
 else     if (text.indexOf('3',leadingText.length() + username.length()) >= 0)     stage=3;
    if (stage == 1) {
      if (playerInfo.containsKey(username)) {
        PGPlayerInfo player=playerInfo.get(username);
        for (double i=1; i <= MAX_REACH; i++) {
          Vec3D vec=player.transform.forward(i).plus(0,PGPlayerInfo.EYE_LEVEL,0);
          connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ vec+ "String_Node_Str"+ username+ "String_Node_Str"+ username+ "String_Node_Str");
        }
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ username);
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str");
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"));
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"));
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"));
        connection.inject(IMPULSE,"String_Node_Str");
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
      }
    }
 else     if (stage == 3) {
      if (playerInfo.containsKey(username)) {
        PGPlayerInfo player=playerInfo.get(username);
        player.active=false;
        Vec3D forward=player.transform.forward(1);
        forward=forward.minus(player.transform.asVector());
        forward=forward.mult(2 * MAX_REACH / player.distance);
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ forward.x+ "String_Node_Str"+ forward.y+ "String_Node_Str"+ forward.z+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ (MAX_REACH / player.distance)+ "String_Node_Str"+ (int)(2 * (MAX_REACH - player.distance))+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username);
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
      }
    }
  }
);
  connection.getLogObserver().addLogListener(l -> {
    String line=l.getLine();
    String leadingText="String_Node_Str";
    if (!line.startsWith("String_Node_Str",11) || !line.contains(leadingText))     return;
    line=line.substring(line.indexOf(leadingText),line.length() - 1);
    String username=line.substring(38,line.indexOf("String_Node_Str",38));
    String rawChange=line.substring(38 + username.length() + 4);
    int change=Integer.parseInt(rawChange);
    PGPlayerInfo player;
    if (playerInfo.containsKey(username)) {
      player=playerInfo.get(username);
    }
 else {
      player=new PGPlayerInfo(username);
      playerInfo.put(username,player);
    }
    player.distance+=change * SCROLL_STEP;
    player.distance=Math.max(Math.min(player.distance,MAX_REACH),MIN_REACH);
  }
);
  connection.getLogObserver().addLogListener(e -> {
    String text=e.getLine();
    if (text.startsWith("String_Node_Str",11) && text.contains("String_Node_Str")) {
      String username=text.substring(34,text.indexOf(':',34));
      PGPlayerInfo player;
      if (playerInfo.containsKey(username)) {
        player=playerInfo.get(username);
      }
 else {
        player=new PGPlayerInfo(username);
        playerInfo.put(username,player);
      }
      Transform tr=getTransform(text);
      if (tr != null)       player.transform=tr;
    }
 else     if (text.startsWith("String_Node_Str",11) && text.contains("String_Node_Str")) {
      String name=text.substring(34,text.indexOf(':',34));
      if (!name.startsWith("String_Node_Str"))       return;
      String username=name.substring("String_Node_Str".length());
      PGPlayerInfo player;
      if (playerInfo.containsKey(username)) {
        player=playerInfo.get(username);
      }
 else {
        player=new PGPlayerInfo(username);
        playerInfo.put(username,player);
      }
      Transform controller=player.transform;
      Transform controlled=getTransform(text);
      if (controlled == null)       return;
      player.distance=Math.sqrt(Math.pow(controlled.x - controller.x,2) + Math.pow(controlled.y - controller.y,2) + Math.pow(controlled.z - controller.z,2));
    }
    String enable=e.getReturnValueFor("String_Node_Str",true);
    if (enable != null) {
      String username=enable.substring(0,enable.indexOf(':'));
      if (playerInfo.containsKey(username)) {
        playerInfo.get(username).active=true;
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
      }
    }
    String disable=e.getReturnValueFor("String_Node_Str",true);
    if (disable != null) {
      String username=disable.substring(0,disable.indexOf(':'));
      if (playerInfo.containsKey(username)) {
        playerInfo.get(username).active=false;
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
      }
    }
  }
);
  Timer timer=new Timer(100,e -> {
    for (    PGPlayerInfo player : playerInfo.values()) {
      if (player.active) {
        Vec3D forward=player.transform.forward(player.distance).plus(0,PGPlayerInfo.EYE_LEVEL - 0.5,0);
        forward=forward.minus(player.transform.asVector());
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str"+ player.username+ "String_Node_Str"+ forward.x+ "String_Node_Str"+ forward.y+ "String_Node_Str"+ forward.z);
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str"+ player.username+ "String_Node_Str");
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str");
      }
    }
  }
);
  timer.start();
}

Fixed version (ground truth):
@Override public void onSetup(File log,File world){
  try {
    connection=new InjectionConnection(log.toPath(),world.toPath(),"String_Node_Str");
  }
 catch (  IOException|InterruptedException ex) {
    throw new UndeclaredThrowableException(ex);
  }
  connection.getLogObserver().setLogCheckFrequency(100,MILLISECONDS);
  connection.setFlushFrequency(50,MILLISECONDS);
  connection.getLogObserver().addLogListener(l -> {
    String text=l.getLine();
    String leadingText="String_Node_Str";
    if (!text.startsWith("String_Node_Str",11) || !text.contains(leadingText))     return;
    text=text.substring(text.indexOf(leadingText));
    String username=text.substring(leadingText.length(),text.indexOf(' ',leadingText.length()));
    int stage=-1;
    if (text.indexOf('1',leadingText.length() + username.length()) >= 0)     stage=1;
 else     if (text.indexOf('3',leadingText.length() + username.length()) >= 0)     stage=3;
    if (stage == 1) {
      if (playerInfo.containsKey(username)) {
        PGPlayerInfo player=playerInfo.get(username);
        for (double i=1; i <= MAX_REACH; i++) {
          Vec3D vec=player.transform.forward(i).plus(0,PGPlayerInfo.EYE_LEVEL,0);
          connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ vec+ "String_Node_Str"+ username+ "String_Node_Str"+ username+ "String_Node_Str");
        }
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ username);
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str");
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"));
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"));
        connection.inject(IMPULSE,new Command("String_Node_Str" + username,"String_Node_Str" + username + "String_Node_Str"));
        connection.inject(IMPULSE,"String_Node_Str");
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
      }
    }
 else     if (stage == 3) {
      if (playerInfo.containsKey(username)) {
        PGPlayerInfo player=playerInfo.get(username);
        player.active=false;
        Vec3D forward=player.transform.forward(1);
        forward=forward.minus(player.transform.asVector());
        forward=forward.mult(2 * MAX_REACH / player.distance);
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ forward.x+ "String_Node_Str"+ forward.y+ "String_Node_Str"+ forward.z+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username+ "String_Node_Str"+ (MAX_REACH / player.distance)+ "String_Node_Str"+ (int)(2 * (MAX_REACH - player.distance))+ "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str"+ username);
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
        connection.inject(IMPULSE,"String_Node_Str" + username + "String_Node_Str");
      }
    }
  }
);
  connection.getLogObserver().addLogListener(l -> {
    String line=l.getLine();
    String leadingText="String_Node_Str";
    if (!line.startsWith("String_Node_Str",11) || !line.contains(leadingText))     return;
    line=line.substring(line.indexOf(leadingText),line.length() - 1);
    String username=line.substring(38,line.indexOf("String_Node_Str",38));
    String rawChange=line.substring(38 + username.length() + 4);
    int change=Integer.parseInt(rawChange);
    PGPlayerInfo player;
    if (playerInfo.containsKey(username)) {
      player=playerInfo.get(username);
    }
 else {
      player=new PGPlayerInfo(username);
      playerInfo.put(username,player);
    }
    player.distance+=change * SCROLL_STEP;
    player.distance=Math.max(Math.min(player.distance,MAX_REACH),MIN_REACH);
  }
);
  connection.getLogObserver().addLogListener(e -> {
    String text=e.getLine();
    if (text.startsWith("String_Node_Str",11) && text.contains("String_Node_Str")) {
      String username=text.substring(34,text.indexOf(':',34));
      PGPlayerInfo player;
      if (playerInfo.containsKey(username)) {
        player=playerInfo.get(username);
      }
 else {
        player=new PGPlayerInfo(username);
        playerInfo.put(username,player);
      }
      Transform tr=getTransform(text);
      if (tr != null)       player.transform=tr;
    }
 else     if (text.startsWith("String_Node_Str",11) && text.contains("String_Node_Str")) {
      String name=text.substring(34,text.indexOf(':',34));
      if (!name.startsWith("String_Node_Str"))       return;
      String username=name.substring("String_Node_Str".length());
      PGPlayerInfo player;
      if (playerInfo.containsKey(username)) {
        player=playerInfo.get(username);
      }
 else {
        player=new PGPlayerInfo(username);
        playerInfo.put(username,player);
      }
      Transform controller=player.transform;
      Transform controlled=getTransform(text);
      if (controlled == null)       return;
      player.distance=Math.sqrt(Math.pow(controlled.x - controller.x,2) + Math.pow(controlled.y - controller.y,2) + Math.pow(controlled.z - controller.z,2));
    }
    String enable=e.getReturnValueFor("String_Node_Str",true);
    if (enable != null) {
      String username=enable.substring(0,enable.indexOf(':'));
      if (playerInfo.containsKey(username)) {
        playerInfo.get(username).active=true;
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
      }
    }
    String disable=e.getReturnValueFor("String_Node_Str",true);
    if (disable != null) {
      String username=disable.substring(0,disable.indexOf(':'));
      if (playerInfo.containsKey(username)) {
        playerInfo.get(username).active=false;
      }
 else {
        playerInfo.put(username,new PGPlayerInfo(username));
      }
    }
  }
);
  Timer timer=new Timer(100,e -> {
    for (    PGPlayerInfo player : playerInfo.values()) {
      if (player.active) {
        Vec3D forward=player.transform.forward(player.distance).plus(0,PGPlayerInfo.EYE_LEVEL - 0.5,0);
        forward=forward.minus(player.transform.asVector());
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str"+ player.username+ "String_Node_Str"+ forward.toRelativeString());
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str"+ player.username+ "String_Node_Str");
        connection.inject(REPEAT,"String_Node_Str" + player.username + "String_Node_Str");
      }
    }
  }
);
  timer.start();
}