Program: 50145
Project: 50145
Buggy source:
private void callListener(ListenerItem listenerItem,EntryEvent event){
  Object listener=listenerItem.listener;
  EntryEventType entryEventType=event.getEventType();
  if (listenerItem.instanceType == Instance.InstanceType.MAP) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof MProxy) {
        MProxy mProxy=(MProxy)proxy;
        mProxy.getMapOperationStats().incrementReceivedEvents();
      }
    }
  }
switch (listenerItem.instanceType) {
case MAP:
case MULTIMAP:
    EntryListener entryListener=(EntryListener)listener;
switch (entryEventType) {
case ADDED:
    entryListener.entryAdded(event);
  break;
case REMOVED:
entryListener.entryRemoved(event);
break;
case UPDATED:
entryListener.entryUpdated(event);
break;
case EVICTED:
entryListener.entryEvicted(event);
break;
}
break;
case SET:
case LIST:
ItemListener itemListener=(ItemListener)listener;
switch (entryEventType) {
case ADDED:
itemListener.itemAdded(event.getKey());
break;
case REMOVED:
itemListener.itemRemoved(event.getKey());
break;
}
break;
case TOPIC:
MessageListener messageListener=(MessageListener)listener;
messageListener.onMessage(event.getValue());
break;
case QUEUE:
ItemListener queueItemListener=(ItemListener)listener;
switch (entryEventType) {
case ADDED:
queueItemListener.itemAdded(event.getValue());
break;
case REMOVED:
queueItemListener.itemRemoved(event.getValue());
break;
}
break;
}
}

Fixed version (ground truth):
private void callListener(final ListenerItem listenerItem,final EntryEvent event){
  final Object listener=listenerItem.listener;
  final EntryEventType entryEventType=event.getEventType();
  if (listenerItem.instanceType == Instance.InstanceType.MAP) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof MProxy) {
        MProxy mProxy=(MProxy)proxy;
        mProxy.getMapOperationStats().incrementReceivedEvents();
      }
    }
  }
  final EntryEvent event2=listenerItem.includeValue ? event : (event.getValue() != null ? new EntryEvent(event.getSource(),event.getMember(),event.getEventType().getType(),event.getKey(),null,null) : event);
switch (listenerItem.instanceType) {
case MAP:
case MULTIMAP:
    EntryListener entryListener=(EntryListener)listener;
switch (entryEventType) {
case ADDED:
    entryListener.entryAdded(event2);
  break;
case REMOVED:
entryListener.entryRemoved(event2);
break;
case UPDATED:
entryListener.entryUpdated(event2);
break;
case EVICTED:
entryListener.entryEvicted(event2);
break;
}
break;
case SET:
case LIST:
ItemListener itemListener=(ItemListener)listener;
switch (entryEventType) {
case ADDED:
itemListener.itemAdded(event2.getKey());
break;
case REMOVED:
itemListener.itemRemoved(event2.getKey());
break;
}
break;
case TOPIC:
MessageListener messageListener=(MessageListener)listener;
messageListener.onMessage(event2.getValue());
break;
case QUEUE:
ItemListener queueItemListener=(ItemListener)listener;
switch (entryEventType) {
case ADDED:
queueItemListener.itemAdded(event2.getValue());
break;
case REMOVED:
queueItemListener.itemRemoved(event2.getValue());
break;
}
break;
}
}