Program: 28046
Project: 28046
Buggy source:
@Override public void create(Table table){
  drawDebug=true;
  shapeRenderer=new ShapeRenderer();
  character=new SteeringActor(container.badlogicSmall,false){
    @Override public void act(    float delta){
      super.act(delta);
      if (openPath) {
        Vector2 extremity=followPathSB.getPathOffset() >= 0 ? linePath.getEndPoint() : linePath.getStartPoint();
        float tolerance=followPathSB.getArrivalTolerance();
        if (getPosition().dst2(extremity) < tolerance * tolerance) {
          followPathSB.setPathOffset(-followPathSB.getPathOffset());
          pathOffset.setValue(followPathSB.getPathOffset());
        }
      }
    }
  }
;
  character.setMaxLinearSpeed(100);
  character.setMaxLinearAcceleration(300);
  wayPoints=createRandomPath(MathUtils.random(4,16),50,50,container.stageWidth - 50,container.stageHeight - 50);
  linePath=new LinePath<Vector2>(wayPoints,openPath);
  followPathSB=new FollowPath<Vector2,LinePathParam>(character,linePath,30).setTimeToTarget(0.1f).setArrivalTolerance(0.001f).setDecelerationRadius(80);
  character.setSteeringBehavior(followPathSB);
  table.addActor(character);
  character.setCenterPosition(wayPoints.first().x,wayPoints.first().y);
  Table detailTable=new Table(container.skin);
  detailTable.row();
  final Label labelPathOffset=new Label("String_Node_Str" + followPathSB.getPathOffset() + "String_Node_Str",container.skin);
  detailTable.add(labelPathOffset);
  detailTable.row();
  pathOffset=new Slider(-150,+150,5,false,container.skin);
  pathOffset.setValue(followPathSB.getPathOffset());
  pathOffset.addListener(new ChangeListener(){
    @Override public void changed(    ChangeEvent event,    Actor actor){
      Slider slider=(Slider)actor;
      followPathSB.setPathOffset(slider.getValue());
      labelPathOffset.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
    }
  }
);
  detailTable.add(pathOffset);
  detailTable.row();
  addMaxLinearSpeedController(detailTable,character);
  detailTable.row();
  addMaxLinearAccelerationController(detailTable,character,0,5000,10);
  detailTable.row();
  final Label labelPredictionTime=new Label("String_Node_Str" + followPathSB.getPredictionTime() + "String_Node_Str",container.skin);
  detailTable.add(labelPredictionTime);
  detailTable.row();
  Slider predictionTime=new Slider(0,3,.1f,false,container.skin);
  predictionTime.setValue(followPathSB.getPredictionTime());
  predictionTime.addListener(new ChangeListener(){
    @Override public void changed(    ChangeEvent event,    Actor actor){
      Slider slider=(Slider)actor;
      followPathSB.setPredictionTime(slider.getValue());
      labelPredictionTime.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
    }
  }
);
  detailTable.add(predictionTime);
  if (openPath) {
    detailTable.row();
    final Label labelDecelerationRadius=new Label("String_Node_Str" + followPathSB.getDecelerationRadius() + "String_Node_Str",container.skin);
    detailTable.add(labelDecelerationRadius);
    detailTable.row();
    Slider decelerationRadius=new Slider(0,150,1,false,container.skin);
    decelerationRadius.setValue(followPathSB.getDecelerationRadius());
    decelerationRadius.addListener(new ChangeListener(){
      @Override public void changed(      ChangeEvent event,      Actor actor){
        Slider slider=(Slider)actor;
        followPathSB.setDecelerationRadius(slider.getValue());
        labelDecelerationRadius.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
      }
    }
);
    detailTable.add(decelerationRadius);
    detailTable.row();
    final Label labelArrivalTolerance=new Label("String_Node_Str" + followPathSB.getArrivalTolerance() + "String_Node_Str",container.skin);
    detailTable.add(labelArrivalTolerance);
    detailTable.row();
    Slider arrivalTolerance=new Slider(0,1,0.0001f,false,container.skin);
    arrivalTolerance.setValue(followPathSB.getArrivalTolerance());
    arrivalTolerance.addListener(new ChangeListener(){
      @Override public void changed(      ChangeEvent event,      Actor actor){
        Slider slider=(Slider)actor;
        followPathSB.setArrivalTolerance(slider.getValue());
        labelArrivalTolerance.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
      }
    }
);
    detailTable.add(arrivalTolerance);
  }
  detailTable.row();
  addSeparator(detailTable);
  detailTable.row();
  CheckBox debug=new CheckBox("String_Node_Str",container.skin);
  debug.setChecked(drawDebug);
  debug.addListener(new ClickListener(){
    @Override public void clicked(    InputEvent event,    float x,    float y){
      CheckBox checkBox=(CheckBox)event.getListenerActor();
      drawDebug=checkBox.isChecked();
    }
  }
);
  detailTable.add(debug);
  detailWindow=createDetailWindow(detailTable);
}

Fixed version (ground truth):
@Override public void create(Table table){
  drawDebug=true;
  shapeRenderer=new ShapeRenderer();
  character=new SteeringActor(container.badlogicSmall,false){
    @Override public void act(    float delta){
      super.act(delta);
      if (openPath) {
        Vector2 extremity=followPathSB.getPathOffset() >= 0 ? linePath.getEndPoint() : linePath.getStartPoint();
        float tolerance=followPathSB.getArrivalTolerance();
        if (getPosition().dst2(extremity) < tolerance * tolerance) {
          followPathSB.setPathOffset(-followPathSB.getPathOffset());
          pathOffset.setValue(followPathSB.getPathOffset());
        }
      }
    }
  }
;
  character.setMaxLinearSpeed(100);
  character.setMaxLinearAcceleration(300);
  wayPoints=createRandomPath(MathUtils.random(4,16),50,50,container.stageWidth - 50,container.stageHeight - 50);
  linePath=new LinePath<Vector2>(wayPoints,openPath);
  followPathSB=new FollowPath<Vector2,LinePathParam>(character,linePath,30).setTimeToTarget(0.1f).setArrivalTolerance(0.001f).setDecelerationRadius(80);
  character.setSteeringBehavior(followPathSB);
  table.addActor(character);
  character.setPosition(wayPoints.first().x,wayPoints.first().y,Align.center);
  Table detailTable=new Table(container.skin);
  detailTable.row();
  final Label labelPathOffset=new Label("String_Node_Str" + followPathSB.getPathOffset() + "String_Node_Str",container.skin);
  detailTable.add(labelPathOffset);
  detailTable.row();
  pathOffset=new Slider(-150,+150,5,false,container.skin);
  pathOffset.setValue(followPathSB.getPathOffset());
  pathOffset.addListener(new ChangeListener(){
    @Override public void changed(    ChangeEvent event,    Actor actor){
      Slider slider=(Slider)actor;
      followPathSB.setPathOffset(slider.getValue());
      labelPathOffset.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
    }
  }
);
  detailTable.add(pathOffset);
  detailTable.row();
  addMaxLinearSpeedController(detailTable,character);
  detailTable.row();
  addMaxLinearAccelerationController(detailTable,character,0,5000,10);
  detailTable.row();
  final Label labelPredictionTime=new Label("String_Node_Str" + followPathSB.getPredictionTime() + "String_Node_Str",container.skin);
  detailTable.add(labelPredictionTime);
  detailTable.row();
  Slider predictionTime=new Slider(0,3,.1f,false,container.skin);
  predictionTime.setValue(followPathSB.getPredictionTime());
  predictionTime.addListener(new ChangeListener(){
    @Override public void changed(    ChangeEvent event,    Actor actor){
      Slider slider=(Slider)actor;
      followPathSB.setPredictionTime(slider.getValue());
      labelPredictionTime.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
    }
  }
);
  detailTable.add(predictionTime);
  if (openPath) {
    detailTable.row();
    final Label labelDecelerationRadius=new Label("String_Node_Str" + followPathSB.getDecelerationRadius() + "String_Node_Str",container.skin);
    detailTable.add(labelDecelerationRadius);
    detailTable.row();
    Slider decelerationRadius=new Slider(0,150,1,false,container.skin);
    decelerationRadius.setValue(followPathSB.getDecelerationRadius());
    decelerationRadius.addListener(new ChangeListener(){
      @Override public void changed(      ChangeEvent event,      Actor actor){
        Slider slider=(Slider)actor;
        followPathSB.setDecelerationRadius(slider.getValue());
        labelDecelerationRadius.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
      }
    }
);
    detailTable.add(decelerationRadius);
    detailTable.row();
    final Label labelArrivalTolerance=new Label("String_Node_Str" + followPathSB.getArrivalTolerance() + "String_Node_Str",container.skin);
    detailTable.add(labelArrivalTolerance);
    detailTable.row();
    Slider arrivalTolerance=new Slider(0,1,0.0001f,false,container.skin);
    arrivalTolerance.setValue(followPathSB.getArrivalTolerance());
    arrivalTolerance.addListener(new ChangeListener(){
      @Override public void changed(      ChangeEvent event,      Actor actor){
        Slider slider=(Slider)actor;
        followPathSB.setArrivalTolerance(slider.getValue());
        labelArrivalTolerance.setText("String_Node_Str" + slider.getValue() + "String_Node_Str");
      }
    }
);
    detailTable.add(arrivalTolerance);
  }
  detailTable.row();
  addSeparator(detailTable);
  detailTable.row();
  CheckBox debug=new CheckBox("String_Node_Str",container.skin);
  debug.setChecked(drawDebug);
  debug.addListener(new ClickListener(){
    @Override public void clicked(    InputEvent event,    float x,    float y){
      CheckBox checkBox=(CheckBox)event.getListenerActor();
      drawDebug=checkBox.isChecked();
    }
  }
);
  detailTable.add(debug);
  detailWindow=createDetailWindow(detailTable);
}