docs: public void connectUsingTrmWithTargetData(String targetType, String targetSignificance, String target)
                      throws ResourceException
      {
          final String methodName = "connectUsingTrmWithTargetData";
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled())
          {
              SibTr.entry(this, TRACE, methodName, new Object[] { targetType, targetSignificance, target });
          }
  
          synchronized (_connections)
          {
              // At this point in the code path we can be sure that:
              // 1. There are no local preferred ME's (this method would not be called if there were)
              // 2. Target data has been set (we are in the else block of the "if (target == null)" block
              // 
              // Since we have been passed target data it means we are attempting to create a connection
              // to a preferred (or required) ME (no target data is ever passed if we are trying to create
              // a connection to a non preferred ME). With this in mind, if we are currently connected to
              // a non preferred ME (_connectToPreferred is false) or we do not currently have a connection
              // then we'll try and create a connection that matches our target data. If a connection
              // is created then we should close any non preferred connections (if they are any).
              if ((!_connectedToPreferred) || (_connections.size() == 0))
              {
                  // Set to required (even if user opted for preferred)
                  // Pass targetType and target from user data.
                  SibRaMessagingEngineConnection newConnection = null;
                  try
                  {
                      newConnection = new SibRaMessagingEngineConnection(this, _endpointConfiguration.getBusName(),
                                      targetType, SibTrmConstants.TARGET_SIGNIFICANCE_REQUIRED, target);
  
                      dropNonPreferredConnections();
  
                      if (newConnection.getConnection() != null) {
                          _connections.put(newConnection.getConnection().getMeUuid(), newConnection);
                          createListener(newConnection);
  
                      }
  
                      if (_connections.size() > 0)
                      {
                          _connectedRemotely = checkIfRemote(_connections.values()
                                          .iterator().next());
                          _connectedToPreferred = true;
  
                          if (TraceComponent.isAnyTracingEnabled() && TRACE.isDebugEnabled())
                          {
                              SibTr.debug(TRACE, "We have connect <remote=" + _connectedRemotely + " > <preferred="
                                                 + _connectedToPreferred + ">");
                          }
                      }
                  } catch (final SIResourceException exception)
                  {
                      // No FFDC code needed
                      // We are potentially connecting remotely so this error may be transient
                      // Possibly the remote ME is not available
                      SibTr.warning(TRACE, SibTr.Suppressor.ALL_FOR_A_WHILE, "TARGETTED_CONNECTION_FAILED_CWSIV0787",
                                    new Object[] { targetType, targetSignificance, target, _endpointConfiguration.getBusName() });
                      if (TraceComponent.isAnyTracingEnabled() && TRACE.isDebugEnabled())
                      {
                          SibTr.debug(TRACE, "Failed to obtain a connection - retry after a set interval");
                      }
                  } catch (final SIException exception)
                  {
                      FFDCFilter.processException(exception, CLASS_NAME + "." + methodName, "1:711:1.45", this);
  
                      if (TraceComponent.isAnyTracingEnabled() && TRACE.isEventEnabled())
                      {
                          SibTr.exception(this, TRACE, exception);
                      }
  
                      throw new ResourceException(NLS.getFormattedMessage("CONNECT_FAILED_CWSIV0782", new Object[] {
                                                                                                                    _endpointConfiguration.getDestination().getDestinationName(),
                                                                                                                    _endpointConfiguration.getBusName(), this, exception }, null), exception);
                  }
              }
          } // Sync block
  
          // Failed to get a preferred one, try for any ME next.
          // Also if we have connected to a remote non preferred ME we may wish to try again for a local
          // non preferred ME (We know there is not a local preferred ME as we would not be in this
          // method if there were).
          if (((_connections.size() == 0) || (_connectedRemotely && !_connectedToPreferred && _destinationStrategy
                          .isDropRemoteNonPreferredForLocalNonPreferred()))
              && (targetSignificance.equals(SibTrmConstants.TARGET_SIGNIFICANCE_PREFERRED)))
          {
              if (TraceComponent.isAnyTracingEnabled() && TRACE.isDebugEnabled())
              {
                  SibTr.debug(TRACE,
                              "Could not obtain the preferred connection - try again without any target preferences");
              }
              // For durable pub sub there are no local preferred MEs, for point to point and non durable pub
              // sub then they all count as preferred
              connect(_destinationStrategy.isDurablePubsSub() ? null : getMEsToCheck(), null, null, null, false);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled())
          {
              SibTr.exit(TRACE, methodName);
          }
      }