Program: 50668
Project: 50668
Buggy source:
/** 
 * Handle a browser event that took place within the cell. The default implementation returns null.
 * @param context - the {@link Context} of the cell
 * @param parent - the parent Element
 * @param value - the value associated with the cell
 * @param event - the native browser event
 * @param valueUpdater - a {@link ValueUpdater}, or null if not specified
 */
@Override public void onBrowserEvent(Context context,Element parent,HeaderDetails value,NativeEvent event,ValueUpdater<HeaderDetails> valueUpdater){
  super.onBrowserEvent(context,parent,value,event,valueUpdater);
  Element filterImageElement=getImageElement(parent);
  Element filterImageParentElement=filterImageElement.getParentElement();
  if (event.getEventTarget().equals(filterImageElement)) {
    if ("String_Node_Str".equals(event.getType())) {
      replaceImageElement(resources.filterIconDown(),filterImageElement,filterImageParentElement);
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      replaceImageElement(resources.filterIconOver(),filterImageElement,filterImageParentElement);
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      if (filterActive) {
        replaceImageElement(resources.filterIconActive(),filterImageElement,filterImageParentElement);
      }
 else {
        replaceImageElement(resources.filterIconInactive(),filterImageElement,filterImageParentElement);
      }
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      replaceImageElement(resources.filterIconOver(),filterImageElement,filterImageParentElement);
    }
  }
}

Fixed version (ground truth):
/** 
 * Handle a browser event that took place within the cell. The default implementation returns null.
 * @param context - the {@link Context} of the cell
 * @param parent - the parent Element
 * @param value - the value associated with the cell
 * @param event - the native browser event
 * @param valueUpdater - a {@link ValueUpdater}, or null if not specified
 */
@Override public void onBrowserEvent(Context context,Element parent,HeaderDetails value,NativeEvent event,ValueUpdater<HeaderDetails> valueUpdater){
  super.onBrowserEvent(context,parent,value,event,valueUpdater);
  Element filterImageElement=getImageElement(parent);
  Element filterImageParentElement=filterImageElement.getParentElement();
  if (event.getEventTarget().equals(filterImageElement)) {
    if ("String_Node_Str".equals(event.getType())) {
      replaceImageElement(resources.filterIconDown(),filterImageElement,filterImageParentElement);
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      if (doMouseOver && Window.Navigator.getAppName().equals("String_Node_Str")) {
        doMouseOver=false;
        replaceImageElement(resources.filterIconOver(),filterImageElement,filterImageParentElement);
      }
 else       if (!Window.Navigator.getAppName().equals("String_Node_Str")) {
        replaceImageElement(resources.filterIconOver(),filterImageElement,filterImageParentElement);
      }
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      if (Window.Navigator.getAppName().equals("String_Node_Str")) {
        doMouseOver=true;
      }
      if (filterActive) {
        replaceImageElement(resources.filterIconActive(),filterImageElement,filterImageParentElement);
      }
 else {
        replaceImageElement(resources.filterIconInactive(),filterImageElement,filterImageParentElement);
      }
    }
 else     if ("String_Node_Str".equals(event.getType())) {
      replaceImageElement(resources.filterIconOver(),filterImageElement,filterImageParentElement);
    }
  }
}