docs: public ManagedConnection createManagedConnection(final Subject subject,
              final ConnectionRequestInfo requestInfo)
              throws ResourceAdapterInternalException, ResourceException {
  
          if (TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, "createManagedConnection", new Object[] {
                      SibRaUtils.subjectToString(subject), requestInfo });
          }
  
          if (requestInfo == null) {
  
              // This typically indicates that the connection mangaer is trying
              // to obtain an XAResource during transaction recovery. This is not
              // supported as transaction recovery should be performed via the
              // SibRaXaResourceFactory.
  
              final ResourceAdapterInternalException exception = new ResourceAdapterInternalException(
                      NLS.getString("NULL_REQUEST_INFO_CWSIV0352"));
              if (TRACE.isEventEnabled()) {
                  SibTr.exception(this, TRACE, exception);
              }
              throw exception;
  
          }
  
          final ManagedConnection managedConnection;
  
          // Check it is one of our request info objects
          if (requestInfo instanceof SibRaConnectionRequestInfo) {
  
              final SibRaConnectionRequestInfo sibRaRequestInfo = (SibRaConnectionRequestInfo) requestInfo;
  
              // Decode the subject and request info using a connection info
              // object
              final SibRaConnectionInfo connectionInfo = new SibRaConnectionInfo(
                      this, subject, sibRaRequestInfo);
  
              final SICoreConnection coreConnection;
  
              try {
  
                  // Determine whether the request has previously been allocated
                  // a different managed connection...
  
                  if (sibRaRequestInfo.getCoreConnection() == null) {
  
                      // ... if not, create a new core connection
  
                      coreConnection = connectionInfo.createConnection();
  
                  } else {
  
                      // ... otherwise, clone the connection from the request
  
                      coreConnection = sibRaRequestInfo.getCoreConnection()
                              .cloneConnection();
  
                  }
  
              } catch (SIException exception) {
  
                  FFDCFilter
                          .processException(
                                  exception,
                                  "com.ibm.ws.sib.ra.impl.SibRaManagedConnectionFactory.createManagedConnection",
                                  FFDC_PROBE_2, this);
                  if (TRACE.isEventEnabled()) {
                      SibTr.exception(this, TRACE, exception);
                  }
                  throw new ResourceException(NLS.getFormattedMessage(
                          "CONNECTION_CLONE_CWSIV0353",
                          new Object[] { exception }, null), exception);
  
              } catch (SIErrorException exception) {
  
                  FFDCFilter
                          .processException(
                                  exception,
                                  "com.ibm.ws.sib.ra.impl.SibRaManagedConnectionFactory.createManagedConnection",
                                  FFDC_PROBE_3, this);
                  if (TRACE.isEventEnabled()) {
                      SibTr.exception(this, TRACE, exception);
                  }
                  throw new ResourceException(NLS.getFormattedMessage(
                          "CONNECTION_CLONE_CWSIV0353",
                          new Object[] { exception }, null), exception);
  
              }
  
              try
              {
                managedConnection = new SibRaManagedConnection(this,
                        connectionInfo, coreConnection);
                managedConnection.setLogWriter(_logWriter);
              }
              catch (SIException ex)
              {
                FFDCFilter
                .processException(
                        ex,
                        "com.ibm.ws.sib.ra.impl.SibRaManagedConnectionFactory.createManagedConnection",
                        FFDC_PROBE_5, this);
                
                if (TRACE.isEventEnabled()) {
    	              SibTr.exception(this, TRACE, ex);
                }
                
                throw new ResourceException (NLS.getFormattedMessage (
              			     "CREATE_MANAGED_CONNECTION_CWSIV0355", new Object [] { ex }, null), ex);
              }
  
          } else {
  
              // Connection manager error if it is passing us someone else's
              // request information
              throw new ResourceAdapterInternalException(NLS.getFormattedMessage(
                      "UNRECOGNISED_REQUEST_INFO_CWSIV0354", new Object[] {
                              requestInfo, SibRaConnectionRequestInfo.class },
                      null));
  
          }
  
          if (TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, "createManagedConnection",
                      managedConnection);
          }
          return managedConnection;
  
      }