docs: public static final SICoreConnectionFactory getSICoreConnectionFactory(
        FactoryType type, Map properties)
        throws SIInsufficientDataForFactoryTypeException, SIIncorrectCallException, SIResourceException
    {
      SICoreConnectionFactory factory = null;
  
      if (TraceComponent.isAnyTracingEnabled() && _tc.isEntryEnabled())
      {
        SibTr.entry(_tc, "getSICoreConnectionFactory", new Object[]{type,
          properties});
      }
  
      // If the supplied properties is null make it an empty map.
      if (properties == null) properties = Collections.EMPTY_MAP;
  
      // If the type is FactoryType.TRM_CONNECTION
      if (type == FactoryType.TRM_CONNECTION)
      {
        // just set factory to be the TrmSICoreConnectionFactory.
        factory = TrmSICoreConnectionFactory.getInstance();
      }
      // The only other option is PrivateFactoryType.LOCAL_CONNECTION
      else if (type == PrivateFactoryType.LOCAL_CONNECTION)
      {
        // So we get the bus and me name.
        String bus = (String)properties.get(PrivateFactoryType.BUS_NAME);
        String me = (String)properties.get(PrivateFactoryType.ME_NAME);
  
        // If the supplied bus or me name is null
        if (bus == null || me == null)
        {
          // there is insufficient information to return a local SICoreConnectionFactory
          // The message for the exception
          String errorMessage;
          // The message for debug trace
          String debugMessage;
  
          // Set the debug message if both are null
          if (bus == null && me == null)
          {
            errorMessage = _nls.getString("BUS_AND_ME_NAMES_ARE_NULL_CWSJC0001E");
            debugMessage = "Both the Bus and ME names are null";
          }
          // Set the debug message if the bus name is null
          else if (bus == null)
          {
            errorMessage = _nls.getFormattedMessage("BUS_NAME_IS_NULL_CWSJC0002E",
                                                    new Object[] {me}, null);
            debugMessage = "The bus name is null";
          }
          // Set the debug message if the me name is null
          else
          {
            errorMessage = _nls.getFormattedMessage("ME_NAME_IS_NULL_CWSJC0003E",
                                                    new Object[]{bus}, null);
            debugMessage = "The ME name is null";
          }
  
          // Trace the debug message
          if (TraceComponent.isAnyTracingEnabled() && _tc.isDebugEnabled())
          {
            SibTr.debug(_tc, debugMessage);
          }
  
          // Create the exception with the errorMessage in it.
          SIInsufficientDataForFactoryTypeException newE = new SIInsufficientDataForFactoryTypeException(
              errorMessage);
  
          // Trace that we are about to throw the exception
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEventEnabled())
          {
            SibTr.event(_tc, "throwing", newE);
          }
  
          // Trace the method exit
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEntryEnabled())
          {
            SibTr.exit(_tc, "getSICoreConnectionFactory");
          }
  
          throw newE;
        }
  
        // Get the JsAdminService
        JsAdminService admin = CommonServiceFacade.getJsAdminService();
  
        // If it is null we are not in the server.
        if (admin == null)
        {
          if (TraceComponent.isAnyTracingEnabled() && _tc.isDebugEnabled())
          {
            SibTr.debug(_tc, "Unable to contact the admin service");
          }
  
          // No admin service means no local MEs.
          SIResourceException newE = new SIResourceException(
              _nls.getFormattedMessage("ADMIN_SERVICE_NULL_CWSJC0004E", new Object[] {bus, me}, null));
  
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEventEnabled())
          {
            SibTr.event(_tc, "throwing", newE);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEntryEnabled())
          {
            SibTr.exit(_tc, "getSICoreConnectionFactory");
          }
  
          throw newE;
        }
  
        // Get hold of the Messaging Engine
        JsMessagingEngine engine = admin.getMessagingEngine(bus, me);
  
        // If the engine is null then there is no engine with that name on that bus.
        if (engine == null)
        {
          if (TraceComponent.isAnyTracingEnabled() && _tc.isDebugEnabled())
          {
            SibTr.debug(_tc, "Messaging Engine does not exists");
          }
  
          SIResourceException newE = new SIResourceException(
              _nls.getFormattedMessage("ME_NOT_FOUND_CWSJC0005E", new Object[] {bus, me}, null));
  
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEventEnabled())
          {
            SibTr.event(_tc, "throwing", newE);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && _tc.isEntryEnabled())
          {
            SibTr.exit(_tc, "getSICoreConnectionFactory");
          }
  
          throw newE;
        }
  
        // Get hold of the message processor. This should never return null.
        factory = (SICoreConnectionFactory)engine.getMessageProcessor();
      }
     /* else if (type == FactoryType.RA_CONNECTION)
      {
        factory =SibRaFactory.getConnectionFactory(properties);
      }*/
  
      if (TraceComponent.isAnyTracingEnabled() && _tc.isEntryEnabled())
      {
        SibTr.exit(_tc, "getSICoreConnectionFactory", factory);
      }
  
      return factory;
    }