Program: 55675
Project: 55675
Buggy source:
@Override public void action(IAction action){
  if (action.getActionType() != EActionType.SCREEN_CHANGE) {
    System.out.println("String_Node_Str" + action.getActionType() + "String_Node_Str"+ MatchConstants.clock().getTime());
  }
switch (action.getActionType()) {
case BUILD:
    this.setSelection(new SelectionSet());
  final BuildAction buildAction=(BuildAction)action;
EBuildingType buildingType=buildAction.getBuildingType();
final ShortPoint2D pos2=grid.getConstructablePosition(buildAction.getPosition(),buildingType,playerId,InputSettings.USE_NEIGHBOR_POSITIONS_FOR_CONSTRUCTION);
if (pos2 != null) {
scheduleTask(new ConstructBuildingTask(EGuiAction.BUILD,playerId,pos2,buildingType));
}
System.out.println("String_Node_Str" + buildingType);
break;
case SHOW_CONSTRUCTION_MARK:
{
buildingType=((ShowConstructionMarksAction)action).getBuildingType();
constructionMarksCalculator.setBuildingType(buildingType);
break;
}
case DEBUG_ACTION:
for (final ISelectable curr : currentSelection) {
if (curr instanceof IDebugable) {
((IDebugable)curr).debug();
}
}
break;
case SPEED_TOGGLE_PAUSE:
clock.invertPausing();
break;
case SPEED_SET_PAUSE:
clock.setPausing(true);
break;
case SPEED_UNSET_PAUSE:
clock.setPausing(false);
break;
case SPEED_SLOW:
if (!multiplayer) {
clock.setGameSpeed(0.5f);
}
break;
case SPEED_FAST:
if (!multiplayer) {
clock.setGameSpeed(2.0f);
}
break;
case SPEED_FASTER:
if (!multiplayer) {
clock.multiplyGameSpeed(1.2f);
}
break;
case SPEED_SLOWER:
if (!multiplayer) {
clock.multiplyGameSpeed(1 / 1.2f);
}
break;
case SPEED_NORMAL:
if (!multiplayer) {
clock.setGameSpeed(1.0f);
}
break;
case FAST_FORWARD:
if (!multiplayer) {
clock.fastForward();
}
break;
case SELECT_POINT:
handleSelectPointAction((PointAction)action);
break;
case SELECT_AREA:
selectArea((SelectAreaAction)action);
break;
case DESELECT:
deselect();
break;
case SELECT_POINT_TYPE:
selectPointType((PointAction)action);
break;
case MOVE_TO:
{
final PointAction moveToAction=(PointAction)action;
if (currentSelection.getSelectionType() == ESelectionType.BUILDING && currentSelection.getSize() == 1) {
setBuildingWorkArea(moveToAction.getPosition());
}
 else {
moveTo(moveToAction.getPosition());
}
break;
}
case SHOW_MESSAGE:
{
break;
}
case SET_WORK_AREA:
setBuildingWorkArea(((PointAction)action).getPosition());
break;
case DESTROY:
destroySelected();
break;
case STOP_WORKING:
stopOrStartWorkingAction(true);
break;
case START_WORKING:
stopOrStartWorkingAction(false);
break;
case SHOW_SELECTION:
showSelection();
break;
case SCREEN_CHANGE:
constructionMarksCalculator.setScreen(((ScreenChangeAction)action).getScreenArea());
break;
case TOGGLE_DEBUG:
grid.resetDebugColors();
break;
case TOGGLE_FOG_OF_WAR:
if (MatchConstants.ENABLE_FOG_OF_WAR_DISABLING) {
grid.toggleFogOfWar();
}
break;
case SAVE:
taskScheduler.scheduleTask(new SimpleGuiTask(EGuiAction.QUICK_SAVE,playerId));
break;
case CONVERT:
sendConvertAction((ConvertAction)action);
break;
case SET_BUILDING_PRIORITY:
setBuildingPriority(((SetBuildingPriorityAction)action).getNewPriority());
break;
case SET_MATERIAL_DISTRIBUTION_SETTINGS:
{
final SetMaterialDistributionSettingsAction a=(SetMaterialDistributionSettingsAction)action;
taskScheduler.scheduleTask(new SetMaterialDistributionSettingsGuiTask(playerId,a.getManagerPosition(),a.getMaterialType(),a.getProbabilities()));
break;
}
case SET_MATERIAL_PRIORITIES:
{
final SetMaterialPrioritiesAction a=(SetMaterialPrioritiesAction)action;
taskScheduler.scheduleTask(new SetMaterialPrioritiesGuiTask(playerId,a.getPosition(),a.getMaterialTypeForPriority()));
break;
}
case SET_MATERIAL_STOCK_ACCEPTED:
{
final SetAcceptedStockMaterialAction a=(SetAcceptedStockMaterialAction)action;
taskScheduler.scheduleTask(new SetAcceptedStockMaterialGuiTask(playerId,a.getPosition(),a.getMaterial(),a.shouldAccept(),a.isLocalSetting()));
break;
}
case SET_MATERIAL_PRODUCTION:
{
final SetMaterialProductionAction a=(SetMaterialProductionAction)action;
taskScheduler.scheduleTask(new SetMaterialProductionGuiTask(playerId,a.getPosition(),a.getMaterialType(),a.getProductionType(),a.getRatio()));
break;
}
case NEXT_OF_TYPE:
selectNextOfType();
break;
case UPGRADE_SOLDIERS:
{
final SoldierAction a=(SoldierAction)action;
taskScheduler.scheduleTask(new UpgradeSoldiersGuiTask(playerId,a.getSoldierType()));
break;
}
case CHANGE_TRADING_REQUEST:
{
final ISelectable selected=currentSelection.getSingle();
if (selected instanceof Building) {
final ChangeTradingRequestAction a=(ChangeTradingRequestAction)action;
scheduleTask(new ChangeTradingRequestGuiTask(EGuiAction.CHANGE_TRADING,playerId,((Building)selected).getPos(),a.getMaterial(),a.getAmount(),a.isRelative()));
}
break;
}
case SET_TRADING_WAYPOINT:
{
final ISelectable selected=currentSelection.getSingle();
if (selected instanceof Building) {
final SetTradingWaypointAction a=(SetTradingWaypointAction)action;
scheduleTask(new SetTradingWaypointGuiTask(EGuiAction.SET_TRADING_WAYPOINT,playerId,((Building)selected).getPos(),a.getWaypointType(),a.getPosition()));
}
}
case SOLDIERS_ALL:
requestSoldiers(EChangeTowerSoldierTaskType.FULL,null);
break;
case SOLDIERS_ONE:
requestSoldiers(EChangeTowerSoldierTaskType.ONE,null);
break;
case SOLDIERS_LESS:
requestSoldiers(EChangeTowerSoldierTaskType.LESS,((SoldierAction)action).getSoldierType());
break;
case SOLDIERS_MORE:
requestSoldiers(EChangeTowerSoldierTaskType.MORE,((SoldierAction)action).getSoldierType());
break;
case ABORT:
break;
case EXIT:
gameStoppable.stopGame();
break;
default :
System.out.println("String_Node_Str" + action.getActionType() + "String_Node_Str");
}
}

Fixed version (ground truth):
@Override public void action(IAction action){
  if (action.getActionType() != EActionType.SCREEN_CHANGE) {
    System.out.println("String_Node_Str" + action.getActionType() + "String_Node_Str"+ MatchConstants.clock().getTime());
  }
switch (action.getActionType()) {
case BUILD:
    handleBuildAction((BuildAction)action);
  break;
case SHOW_CONSTRUCTION_MARK:
constructionMarksCalculator.setBuildingType(((ShowConstructionMarksAction)action).getBuildingType());
break;
case DEBUG_ACTION:
for (final ISelectable curr : currentSelection) {
if (curr instanceof IDebugable) {
((IDebugable)curr).debug();
}
}
break;
case SPEED_TOGGLE_PAUSE:
clock.invertPausing();
break;
case SPEED_SET_PAUSE:
clock.setPausing(true);
break;
case SPEED_UNSET_PAUSE:
clock.setPausing(false);
break;
case SPEED_SLOW:
if (!multiplayer) {
clock.setGameSpeed(0.5f);
}
break;
case SPEED_FAST:
if (!multiplayer) {
clock.setGameSpeed(5.0f);
}
break;
case SPEED_FASTER:
if (!multiplayer) {
clock.multiplyGameSpeed(1.2f);
}
break;
case SPEED_SLOWER:
if (!multiplayer) {
clock.multiplyGameSpeed(1 / 1.2f);
}
break;
case SPEED_NORMAL:
if (!multiplayer) {
clock.setGameSpeed(1.0f);
}
break;
case FAST_FORWARD:
if (!multiplayer) {
clock.fastForward();
}
break;
case SELECT_POINT:
handleSelectPointAction((PointAction)action);
break;
case SELECT_AREA:
selectArea((SelectAreaAction)action);
break;
case DESELECT:
deselect();
break;
case SELECT_POINT_TYPE:
selectPointType((PointAction)action);
break;
case MOVE_TO:
{
final PointAction moveToAction=(PointAction)action;
if (currentSelection.getSelectionType() == ESelectionType.BUILDING && currentSelection.getSize() == 1) {
setBuildingWorkArea(moveToAction.getPosition());
}
 else {
moveTo(moveToAction.getPosition());
}
break;
}
case SHOW_MESSAGE:
{
break;
}
case SET_WORK_AREA:
setBuildingWorkArea(((PointAction)action).getPosition());
break;
case DESTROY:
destroySelected();
break;
case STOP_WORKING:
stopOrStartWorkingAction(true);
break;
case START_WORKING:
stopOrStartWorkingAction(false);
break;
case SHOW_SELECTION:
showSelection();
break;
case SCREEN_CHANGE:
constructionMarksCalculator.setScreen(((ScreenChangeAction)action).getScreenArea());
break;
case TOGGLE_DEBUG:
grid.resetDebugColors();
break;
case TOGGLE_FOG_OF_WAR:
if (MatchConstants.ENABLE_FOG_OF_WAR_DISABLING) {
grid.toggleFogOfWar();
}
break;
case SAVE:
taskScheduler.scheduleTask(new SimpleGuiTask(EGuiAction.QUICK_SAVE,playerId));
break;
case CONVERT:
sendConvertAction((ConvertAction)action);
break;
case SET_BUILDING_PRIORITY:
setBuildingPriority(((SetBuildingPriorityAction)action).getNewPriority());
break;
case SET_MATERIAL_DISTRIBUTION_SETTINGS:
{
final SetMaterialDistributionSettingsAction a=(SetMaterialDistributionSettingsAction)action;
taskScheduler.scheduleTask(new SetMaterialDistributionSettingsGuiTask(playerId,a.getManagerPosition(),a.getMaterialType(),a.getProbabilities()));
break;
}
case SET_MATERIAL_PRIORITIES:
{
final SetMaterialPrioritiesAction a=(SetMaterialPrioritiesAction)action;
taskScheduler.scheduleTask(new SetMaterialPrioritiesGuiTask(playerId,a.getPosition(),a.getMaterialTypeForPriority()));
break;
}
case SET_MATERIAL_STOCK_ACCEPTED:
{
final SetAcceptedStockMaterialAction a=(SetAcceptedStockMaterialAction)action;
taskScheduler.scheduleTask(new SetAcceptedStockMaterialGuiTask(playerId,a.getPosition(),a.getMaterial(),a.shouldAccept(),a.isLocalSetting()));
break;
}
case SET_MATERIAL_PRODUCTION:
{
final SetMaterialProductionAction a=(SetMaterialProductionAction)action;
taskScheduler.scheduleTask(new SetMaterialProductionGuiTask(playerId,a.getPosition(),a.getMaterialType(),a.getProductionType(),a.getRatio()));
break;
}
case NEXT_OF_TYPE:
selectNextOfType();
break;
case UPGRADE_SOLDIERS:
{
final SoldierAction a=(SoldierAction)action;
taskScheduler.scheduleTask(new UpgradeSoldiersGuiTask(playerId,a.getSoldierType()));
break;
}
case CHANGE_TRADING_REQUEST:
{
final ISelectable selected=currentSelection.getSingle();
if (selected instanceof Building) {
final ChangeTradingRequestAction a=(ChangeTradingRequestAction)action;
scheduleTask(new ChangeTradingRequestGuiTask(EGuiAction.CHANGE_TRADING,playerId,((Building)selected).getPos(),a.getMaterial(),a.getAmount(),a.isRelative()));
}
break;
}
case SET_TRADING_WAYPOINT:
{
final ISelectable selected=currentSelection.getSingle();
if (selected instanceof Building) {
final SetTradingWaypointAction a=(SetTradingWaypointAction)action;
scheduleTask(new SetTradingWaypointGuiTask(EGuiAction.SET_TRADING_WAYPOINT,playerId,((Building)selected).getPos(),a.getWaypointType(),a.getPosition()));
}
}
case SOLDIERS_ALL:
requestSoldiers(EChangeTowerSoldierTaskType.FULL,null);
break;
case SOLDIERS_ONE:
requestSoldiers(EChangeTowerSoldierTaskType.ONE,null);
break;
case SOLDIERS_LESS:
requestSoldiers(EChangeTowerSoldierTaskType.LESS,((SoldierAction)action).getSoldierType());
break;
case SOLDIERS_MORE:
requestSoldiers(EChangeTowerSoldierTaskType.MORE,((SoldierAction)action).getSoldierType());
break;
case ABORT:
break;
case EXIT:
gameStoppable.stopGame();
break;
default :
System.out.println("String_Node_Str" + action.getActionType() + "String_Node_Str");
}
}