Program: 32243
Project: 32243
Buggy source:
/** 
 * Functions used by the Message Dispatching Queues 
 */
private void dispatchIncomingMessage(ProtocolMessage message){
  try {
    if (message.getSessionType().equals(SessionType.RPC) || message.getSessionType().equals(SessionType.BULK_DATA)) {
      try {
        if (_wiproVersion == 1) {
          if (message.getVersion() > 1)           setWiProVersion(message.getVersion());
        }
        Hashtable<String,Object> hash=new Hashtable<String,Object>();
        if (_wiproVersion > 1) {
          Hashtable<String,Object> hashTemp=new Hashtable<String,Object>();
          hashTemp.put(RPCMessage.KEY_CORRELATION_ID,message.getCorrID());
          if (message.getJsonSize() > 0) {
            final Hashtable<String,Object> mhash=JsonRPCMarshaller.unmarshall(message.getData());
            hashTemp.put(RPCMessage.KEY_PARAMETERS,mhash);
          }
          String functionName=FunctionID.getFunctionName(message.getFunctionID());
          if (functionName != null) {
            hashTemp.put(RPCMessage.KEY_FUNCTION_NAME,functionName);
          }
 else {
            DebugTool.logWarning("String_Node_Str" + message.getFunctionID());
            return;
          }
          if (message.getRPCType() == 0x00) {
            hash.put(RPCMessage.KEY_REQUEST,hashTemp);
          }
 else           if (message.getRPCType() == 0x01) {
            hash.put(RPCMessage.KEY_RESPONSE,hashTemp);
          }
 else           if (message.getRPCType() == 0x02) {
            hash.put(RPCMessage.KEY_NOTIFICATION,hashTemp);
          }
          if (message.getBulkData() != null)           hash.put(RPCStruct.KEY_BULK_DATA,message.getBulkData());
          if (message.getPayloadProtected())           hash.put(RPCStruct.KEY_PROTECTED,true);
        }
 else {
          hash=JsonRPCMarshaller.unmarshall(message.getData());
        }
        handleRPCMessage(hash);
      }
 catch (      final Exception excp) {
        DebugTool.logError("String_Node_Str" + excp.toString(),excp);
        passErrorToProxyListener("String_Node_Str",excp);
      }
    }
  }
 catch (  final Exception e) {
    DebugTool.logError("String_Node_Str",e);
    passErrorToProxyListener("String_Node_Str",e);
  }
}

Fixed version (ground truth):
/** 
 * Functions used by the Message Dispatching Queues 
 */
private void dispatchIncomingMessage(ProtocolMessage message){
  try {
    if (message.getSessionType().equals(SessionType.RPC) || message.getSessionType().equals(SessionType.BULK_DATA)) {
      try {
        if (_wiproVersion == 1) {
          if (message.getVersion() > 1)           setWiProVersion(message.getVersion());
        }
        Hashtable<String,Object> hash=new Hashtable<String,Object>();
        if (_wiproVersion > 1) {
          Hashtable<String,Object> hashTemp=new Hashtable<String,Object>();
          hashTemp.put(RPCMessage.KEY_CORRELATION_ID,message.getCorrID());
          if (message.getJsonSize() > 0) {
            final Hashtable<String,Object> mhash=JsonRPCMarshaller.unmarshall(message.getData());
            if (mhash != null) {
              hashTemp.put(RPCMessage.KEY_PARAMETERS,mhash);
            }
          }
          String functionName=FunctionID.getFunctionName(message.getFunctionID());
          if (functionName != null) {
            hashTemp.put(RPCMessage.KEY_FUNCTION_NAME,functionName);
          }
 else {
            DebugTool.logWarning("String_Node_Str" + message.getFunctionID());
            return;
          }
          if (message.getRPCType() == 0x00) {
            hash.put(RPCMessage.KEY_REQUEST,hashTemp);
          }
 else           if (message.getRPCType() == 0x01) {
            hash.put(RPCMessage.KEY_RESPONSE,hashTemp);
          }
 else           if (message.getRPCType() == 0x02) {
            hash.put(RPCMessage.KEY_NOTIFICATION,hashTemp);
          }
          if (message.getBulkData() != null)           hash.put(RPCStruct.KEY_BULK_DATA,message.getBulkData());
          if (message.getPayloadProtected())           hash.put(RPCStruct.KEY_PROTECTED,true);
        }
 else {
          hash=JsonRPCMarshaller.unmarshall(message.getData());
        }
        handleRPCMessage(hash);
      }
 catch (      final Exception excp) {
        DebugTool.logError("String_Node_Str" + excp.toString(),excp);
        passErrorToProxyListener("String_Node_Str",excp);
      }
    }
  }
 catch (  final Exception e) {
    DebugTool.logError("String_Node_Str",e);
    passErrorToProxyListener("String_Node_Str",e);
  }
}