Program: 13017
Project: 13017
Buggy source:
/** 
 * Creates the UI widget for the notification.
 * @param notification
 */
private void createNotificationWidget(final Notification notification){
  NotificationWidget widget=this.notificationWidgetFactory.get();
  String additionalClass="String_Node_Str" + notification.getData().getType();
  widget.addStyleName(additionalClass);
  widget.setNotificationTitle(notification.getData().getTitle());
  if (notification.getData().getBody() != null) {
    widget.setNotificationMessage(notification.getData().getBody());
  }
 else   if (notification.getData().getType() == NotificationType.error) {
    FlowPanel errorDetails=new FlowPanel();
    if (notification.getData().getMessage() != null) {
      errorDetails.add(new InlineLabel(notification.getData().getMessage()));
    }
    if (notification.getData().getException() != null) {
    }
    widget.setNotificationMessage(errorDetails);
  }
 else {
    widget.setNotificationMessage(notification.getData().getMessage(),notification.getData().getType());
  }
  widget.getCloseButton().addClickHandler(new ClickHandler(){
    @Override public void onClick(    ClickEvent event){
      notification.getAliveTimer().cancel();
      onNotificationClosed(notification);
    }
  }
);
  widget.addMouseInHandler(new org.overlord.sramp.ui.client.local.events.MouseInEvent.Handler(){
    @Override public void onMouseIn(    MouseInEvent event){
      notification.getAliveTimer().cancel();
      notification.getAutoCloseAnimation().cancel();
    }
  }
);
  widget.addMouseOutHandler(new org.overlord.sramp.ui.client.local.events.MouseOutEvent.Handler(){
    @Override public void onMouseOut(    MouseOutEvent event){
      if (notification.getData().getType() == NotificationType.notification) {
        notification.getAliveTimer().schedule(5000);
      }
    }
  }
);
  notification.setWidget(widget);
}

Fixed version (ground truth):
/** 
 * Creates the UI widget for the notification.
 * @param notification
 */
private void createNotificationWidget(final Notification notification){
  NotificationWidget widget=this.notificationWidgetFactory.get();
  String additionalClass="String_Node_Str" + notification.getData().getType();
  widget.addStyleName(additionalClass);
  widget.setNotificationTitle(notification.getData().getTitle());
  if (notification.getData().getMessageWidget() != null) {
    widget.setNotificationMessage((Widget)notification.getData().getMessageWidget());
  }
 else   if (notification.getData().getType() == NotificationType.error) {
    FlowPanel errorDetails=new FlowPanel();
    if (notification.getData().getMessage() != null) {
      errorDetails.add(new InlineLabel(notification.getData().getMessage()));
    }
    if (notification.getData().getException() != null) {
    }
    widget.setNotificationMessage(errorDetails);
  }
 else {
    widget.setNotificationMessage(notification.getData().getMessage(),notification.getData().getType());
  }
  widget.getCloseButton().addClickHandler(new ClickHandler(){
    @Override public void onClick(    ClickEvent event){
      notification.getAliveTimer().cancel();
      onNotificationClosed(notification);
    }
  }
);
  widget.addMouseInHandler(new org.overlord.sramp.ui.client.local.events.MouseInEvent.Handler(){
    @Override public void onMouseIn(    MouseInEvent event){
      notification.getAliveTimer().cancel();
      notification.getAutoCloseAnimation().cancel();
    }
  }
);
  widget.addMouseOutHandler(new org.overlord.sramp.ui.client.local.events.MouseOutEvent.Handler(){
    @Override public void onMouseOut(    MouseOutEvent event){
      if (notification.getData().getType() == NotificationType.notification) {
        notification.getAliveTimer().schedule(5000);
      }
    }
  }
);
  notification.setWidget(widget);
}