/**
  * Verifies the equality of the two objects. Performs special handling of certain types.
  *
  * @param inExpected expected object.
  * @param inActual actual object.
  * @throws IOException if there were errors.
  */
 private static void verifyEquals(Object inExpected, Object inActual) throws IOException {
   if (inExpected == null) {
     assertNull(inActual);
   } else {
     assertNotNull("Expected:" + inExpected, inActual);
     // special handling for certain types
     if (inExpected instanceof ModuleInfo) {
       ModuleInfo e = (ModuleInfo) inExpected;
       ModuleInfo a = (ModuleInfo) inActual;
       ModuleTestBase.assertModuleInfo(
           a,
           e.getURN(),
           e.getState(),
           e.getInitiatedDataFlows(),
           e.getParticipatingDataFlows(),
           e.isAutocreated(),
           e.isAutostart(),
           e.isReceiver(),
           e.isEmitter(),
           e.isFlowRequester());
       assertEquals(e.getLastStartFailure(), a.getLastStartFailure());
       assertEquals(e.getLastStopFailure(), a.getLastStopFailure());
       assertEquals(e.getLockQueueLength(), a.getLockQueueLength());
       assertEquals(e.getReadLockCount(), a.getReadLockCount());
       assertEquals(e.isWriteLocked(), a.isWriteLocked());
     } else if (inExpected instanceof Map) {
       // Convert both maps to the same type
       Map e = new HashMap<Object, Object>((Map<?, ?>) inExpected);
       Map a = new HashMap<Object, Object>((Map<?, ?>) inActual);
       assertEquals(e, a);
     } else if (inExpected instanceof CreateStrategyParameters) {
       CreateStrategyParameters e = (CreateStrategyParameters) inExpected;
       CreateStrategyParameters a = (CreateStrategyParameters) inActual;
       assertEquals(e.getInstanceName(), a.getInstanceName());
       assertEquals(e.getStrategyName(), a.getStrategyName());
       assertEquals(e.getLanguage(), a.getLanguage());
       InputStream ein = e.getStrategySource();
       InputStream ain = a.getStrategySource();
       assertArrayEquals(IOUtils.toByteArray(ein), IOUtils.toByteArray(ain));
       ein.close();
       ain.close();
     } else {
       assertEquals(inExpected, inActual);
     }
   }
 }
 /**
  * Returns an <code>MXBean</code> Proxy for the market data module being tested.
  *
  * @return an <code>AbstractMarketDataModuleMXBean</code> value
  * @throws Exception if an error occurs
  */
 protected final AbstractMarketDataModuleMXBean getMXBeanProxy() throws Exception {
   ObjectName objectName = getInstanceURN().toObjectName();
   MBeanServerConnection mMBeanServer = ModuleTestBase.getMBeanServer();
   return JMX.newMXBeanProxy(mMBeanServer, objectName, AbstractMarketDataModuleMXBean.class, true);
 }