Program: 11595
Project: 11595
Buggy source:
@Override public StackedTimePlot2D getLayout(){
  final CollapsibleTimePlot2D plot=(CollapsibleTimePlot2D)super.getLayout();
  plot.setLabelSize(120);
  for (  TimePlotInfo row : plot.getAllTimePlots()) {
    GroupInfo group=plot.createGroup(String.format("String_Node_Str",row.getId()),row);
    row.getLabelPainter().setText("String_Node_Str");
    group.setLabelText("String_Node_Str");
    setPlotLookAndFeel(row);
  }
  final EventPlotInfo events1=plot.createEventPlot("String_Node_Str");
  EventPlotInfo events2=plot.createEventPlot("String_Node_Str");
  EventPlotInfo events3=plot.createEventPlot("String_Node_Str");
  events1.setLabelText("String_Node_Str");
  events2.setLabelText("String_Node_Str");
  events3.setLabelText("String_Node_Str");
  setPlotLookAndFeel(events1);
  setPlotLookAndFeel(events2);
  setPlotLookAndFeel(events3);
  events1.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  events2.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  events3.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  GroupInfo group=plot.createGroup("String_Node_Str",events1,events2,events3);
  group.setLabelText("String_Node_Str");
  group.setOrder(100);
  events1.setOrder(2);
  events2.setOrder(3);
  events3.setOrder(4);
  events1.setBackgroundColor(GlimpseColor.getGreen(0.6f));
  events1.setBorderColor(GlimpseColor.getGreen());
  events3.setBackgroundColor(GlimpseColor.getCyan(0.6f));
  events3.setBorderColor(GlimpseColor.getCyan());
  Epoch e=plot.getEpoch();
  TimeStamp t0=e.toTimeStamp(0);
  Event e0=events1.addEvent("String_Node_Str",t0,t0.add(Time.fromMinutes(20)));
  e0.setShowBackground(false);
  events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(30)),t0.add(Time.fromMinutes(200)));
  Event e1=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(290)),t0.add(Time.fromMinutes(320)));
  e1.setBackgroundColor(GlimpseColor.getRed(0.6f));
  e1.setBorderColor(GlimpseColor.getRed());
  Event e2=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-200)),t0.add(Time.fromMinutes(100)));
  Event e3=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(100)),t0.add(Time.fromMinutes(300)));
  Event e4=events1.addEvent("String_Node_Str",t0.subtract(Time.fromMinutes(40)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-250)),t0.add(Time.fromMinutes(-240)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-220)),t0.add(Time.fromMinutes(-200)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-170)),t0.add(Time.fromMinutes(-100)));
  events1.setAggregateNearbyEvents(true);
  events2.setAggregateNearbyEvents(true);
  e0.setEndTimeMoveable(false);
  e1.setResizeable(false);
  e2.setMinTimeSpan(Time.fromMinutes(100));
  e3.setMaxTimeSpan(Time.fromMinutes(500));
  events1.getEventSelectionHandler().setClearSelectionOnClick(true);
  e2.setSelectable(false);
  e2.setFixedRow(2);
  TextureAtlas atlas=plot.getTextureAtlas();
  try {
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
  }
 catch (  IOException ex) {
    logWarning(logger,"String_Node_Str",ex);
  }
  e1.setIconId("String_Node_Str");
  e2.setIconId("String_Node_Str");
  e3.setIconId("String_Node_Str");
  e4.setIconId("String_Node_Str");
  plot.getTooltipPainter().setFixedWidth(300);
  e0.setToolTipText("String_Node_Str");
  e1.setToolTipText("String_Node_Str");
  e2.setToolTipText("String_Node_Str");
  e3.setToolTipText("String_Node_Str");
  e4.setToolTipText("String_Node_Str");
  events1.addEventPlotListener(new EventPlotListener(){
    @Override public void eventsHovered(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsClicked(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsExited(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsEntered(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventUpdated(    Event event){
      logInfo(logger,"String_Node_Str",event);
    }
  }
);
  plot.getEventSelectionHander().addEventSelectionListener(new EventSelectionListener(){
    @Override public void eventsSelected(    Set<Event> selectedEvents,    Set<Event> deselectedEvents){
      logInfo(logger,"String_Node_Str",selectedEvents,deselectedEvents);
    }
  }
);
  events1.getEventSelectionHandler().setSelectedEventBorderThickness(3.0f);
  plot.setTimeAxisMouseListener(new TaggedAxisMouseListener1D());
  plot.getSelectedTimePainter().setShowLockedStatus(false);
  plot.getTimeAxis().addAxisListener(new TaggedAxisListener1D(){
    @Override public void tagsUpdated(    TaggedAxis1D axis){
      Tag s=plot.getTimeSelectionTag();
      Tag m=plot.getTimeSelectionMaxTag();
      if (s != null && m != null && s.getValue() != m.getValue()) {
        s.setValue(m.getValue());
        axis.validateTags();
      }
    }
  }
);
  return plot;
}

Fixed version (ground truth):
@Override public StackedTimePlot2D getLayout(){
  final CollapsibleTimePlot2D plot=(CollapsibleTimePlot2D)super.getLayout();
  plot.setLabelSize(120);
  for (  TimePlotInfo row : plot.getAllTimePlots()) {
    GroupInfo group=plot.createGroup(String.format("String_Node_Str",row.getId()),row);
    row.getLabelPainter().setText("String_Node_Str");
    group.setLabelText("String_Node_Str");
    setPlotLookAndFeel(row);
  }
  final EventPlotInfo events1=plot.createEventPlot("String_Node_Str");
  EventPlotInfo events2=plot.createEventPlot("String_Node_Str");
  EventPlotInfo events3=plot.createEventPlot("String_Node_Str");
  events1.setLabelText("String_Node_Str");
  events2.setLabelText("String_Node_Str");
  events3.setLabelText("String_Node_Str");
  setPlotLookAndFeel(events1);
  setPlotLookAndFeel(events2);
  setPlotLookAndFeel(events3);
  events1.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  events2.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  events3.getLabelPainter().setVerticalPosition(VerticalPosition.Center);
  GroupInfo group=plot.createGroup("String_Node_Str",events1,events2,events3);
  group.setLabelText("String_Node_Str");
  group.setOrder(100);
  events1.setOrder(2);
  events2.setOrder(3);
  events3.setOrder(4);
  events1.setBackgroundColor(GlimpseColor.getGreen(0.6f));
  events1.setBorderColor(GlimpseColor.getGreen());
  events3.setBackgroundColor(GlimpseColor.getCyan(0.6f));
  events3.setBorderColor(GlimpseColor.getCyan());
  Epoch e=plot.getEpoch();
  TimeStamp t0=e.toTimeStamp(0);
  Event e0=events1.addEvent("String_Node_Str",t0,t0.add(Time.fromMinutes(20)));
  e0.setShowBackground(false);
  events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(30)),t0.add(Time.fromMinutes(200)));
  Event e1=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(290)),t0.add(Time.fromMinutes(320)));
  e1.setBackgroundColor(GlimpseColor.getRed(0.6f));
  e1.setBorderColor(GlimpseColor.getRed());
  Event e2=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-200)),t0.add(Time.fromMinutes(100)));
  Event e3=events1.addEvent("String_Node_Str",t0.add(Time.fromMinutes(100)),t0.add(Time.fromMinutes(300)));
  Event e4=events1.addEvent("String_Node_Str",t0.subtract(Time.fromMinutes(40)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-250)),t0.add(Time.fromMinutes(-240)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-220)),t0.add(Time.fromMinutes(-200)));
  events2.addEvent("String_Node_Str",t0.add(Time.fromMinutes(-170)),t0.add(Time.fromMinutes(-100)));
  events1.setAggregateNearbyEvents(true);
  events2.setAggregateNearbyEvents(true);
  e0.setEndTimeMoveable(false);
  e1.setResizeable(false);
  e2.setMinTimeSpan(Time.fromMinutes(100));
  e3.setMaxTimeSpan(Time.fromMinutes(500));
  events1.getEventSelectionHandler().setClearSelectionOnClick(true);
  e2.setSelectable(false);
  e2.setFixedRow(2);
  events1.validate();
  TextureAtlas atlas=plot.getTextureAtlas();
  try {
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
    atlas.loadImage("String_Node_Str",ImageIO.read(StreamOpener.fileThenResource.openForRead("String_Node_Str")));
  }
 catch (  IOException ex) {
    logWarning(logger,"String_Node_Str",ex);
  }
  e1.setIconId("String_Node_Str");
  e2.setIconId("String_Node_Str");
  e3.setIconId("String_Node_Str");
  e4.setIconId("String_Node_Str");
  plot.getTooltipPainter().setFixedWidth(300);
  e0.setToolTipText("String_Node_Str");
  e1.setToolTipText("String_Node_Str");
  e2.setToolTipText("String_Node_Str");
  e3.setToolTipText("String_Node_Str");
  e4.setToolTipText("String_Node_Str");
  events1.addEventPlotListener(new EventPlotListener(){
    @Override public void eventsHovered(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsClicked(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsExited(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventsEntered(    GlimpseMouseEvent e,    Set<EventSelection> events,    TimeStamp time){
      if (!events.isEmpty())       logInfo(logger,"String_Node_Str",events,time);
    }
    @Override public void eventUpdated(    Event event){
      logInfo(logger,"String_Node_Str",event);
    }
  }
);
  plot.getEventSelectionHander().addEventSelectionListener(new EventSelectionListener(){
    @Override public void eventsSelected(    Set<Event> selectedEvents,    Set<Event> deselectedEvents){
      logInfo(logger,"String_Node_Str",selectedEvents,deselectedEvents);
    }
  }
);
  events1.getEventSelectionHandler().setSelectedEventBorderThickness(3.0f);
  plot.setTimeAxisMouseListener(new TaggedAxisMouseListener1D());
  plot.getSelectedTimePainter().setShowLockedStatus(false);
  plot.getTimeAxis().addAxisListener(new TaggedAxisListener1D(){
    @Override public void tagsUpdated(    TaggedAxis1D axis){
      Tag s=plot.getTimeSelectionTag();
      Tag m=plot.getTimeSelectionMaxTag();
      if (s != null && m != null && s.getValue() != m.getValue()) {
        s.setValue(m.getValue());
        axis.validateTags();
      }
    }
  }
);
  return plot;
}