Program: 49952
Project: 49952
Buggy source:
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.getMapOperationCounter().incrementReceivedEvents();
      }
    }
  }
 else   if (listenerItem.instanceType == Instance.InstanceType.QUEUE) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof QProxy) {
        QProxy qProxy=(QProxy)proxy;
        qProxy.getQueueOperationCounter().incrementReceivedEvents();
      }
    }
  }
 else   if (listenerItem.instanceType == Instance.InstanceType.TOPIC) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof TopicProxy) {
        TopicProxy tProxy=(TopicProxy)proxy;
        tProxy.getTopicOperationCounter().incrementReceivedMessages();
      }
    }
  }
  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;
}
}

Fixed version (ground truth):
private void callListener(final ListenerItem listenerItem,final EntryEvent event){
  if (listenerItem.localListener) {
    Partition p=node.factory.getPartitionService().getPartition(event.getKey());
    if (!node.localMember.equals(p.getOwner())) {
      return;
    }
  }
  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.getMapOperationCounter().incrementReceivedEvents();
      }
    }
  }
 else   if (listenerItem.instanceType == Instance.InstanceType.QUEUE) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof QProxy) {
        QProxy qProxy=(QProxy)proxy;
        qProxy.getQueueOperationCounter().incrementReceivedEvents();
      }
    }
  }
 else   if (listenerItem.instanceType == Instance.InstanceType.TOPIC) {
    if (!listenerItem.name.startsWith("String_Node_Str")) {
      Object proxy=node.factory.getOrCreateProxyByName(listenerItem.name);
      if (proxy instanceof TopicProxy) {
        TopicProxy tProxy=(TopicProxy)proxy;
        tProxy.getTopicOperationCounter().incrementReceivedMessages();
      }
    }
  }
  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;
}
}