docs: public void ready(VirtualConnection readyVc) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "ready", readyVc);
  
          AcceptListener acceptListener = (AcceptListener) config.getPropertyBag()
                          .get(JFapChannelFactory.ACCEPT_LISTENER);
  
          // begin F189351
          if (acceptListener == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "null accept listener - obtaining one from factory");
              acceptListener =
                              ServerConnectionManagerImpl.getAcceptListenerFactory().manufactureAcceptListener();
          }
  
          // begin F196678.10
          Map properties = config.getPropertyBag();
          int heartbeatInterval = determineHeartbeatInterval(properties);
          int heartbeatTimeout = determineHeartbeatTimeout(properties);
          // end F196678.10
  
          // At this point here we leave explicit channel framework land and trot into the land of
          // abstraction. As such, create the channel framework implementation classes directly and
          // pass them into the JFap channel common code.
          CFWNetworkConnection conn = new CFWNetworkConnection(readyVc);
  
          InboundConnection connection = null;
          try {
              connection = new InboundConnection(new CFWNetworkConnectionContext(conn, this),
                                              conn,
                                              acceptListener,
                                              heartbeatInterval,
                                              heartbeatTimeout);
          } catch (FrameworkException fe) {
              //At this point the underlying TCP/IP connection has gone away.
              //We can't throw an Exception so there is little we can do here other than FFDC.
              //The channel framework should close everything down gracefully.
              FFDCFilter.processException(fe, "com.ibm.ws.sib.jfapchannel.impl.JFapInboundConnLink", JFapChannelConstants.JFAPINBOUNDCONNLINK_READY_03);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "Exception occurred creating InboundConnection");
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                  SibTr.exception(this, tc, fe);
          }
  
          if (connection != null) {
              ConversationImpl conversation = new ConversationImpl(Connection.FIRST_CONVERSATION_ID,
                                                                true,
                                                                connection,
                                                                null);
  
              // begin F176003
              // Try asking the user for a conversation receive listener to use
              ConversationReceiveListener rl = null;
              try {
                  rl = acceptListener.acceptConnection(conversation);
              } catch (Throwable t) {
                  FFDCFilter.processException
                                  (t, "com.ibm.ws.sib.jfapchannel.impl.JFapInboundConnLink", JFapChannelConstants.JFAPINBOUNDCONNLINK_READY_01);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "Exception occurred in acceptConnection callback");
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                      SibTr.exception(this, tc, t);
              }
  
              // If the user supplied a null receive listener, or an exception occurred in
              // the callback, supply a receive listener of our own as a temporary mesure
              // until we get the chance to close the conversation.
              if (rl == null) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, "Null receive listener, closing conversation");
                  conversation.setDefaultReceiveListener(new CloseConversationReceiveListener());
                  try {
                      conversation = connection.startNewConversation(conversation);
                      conversation.close(); // D196125
                  } catch (SIException e) {
                      FFDCFilter.processException
                                      (e, "com.ibm.ws.sib.jfapchannel.impl.JFapInboundConnLink", JFapChannelConstants.JFAPINBOUNDCONNLINK_READY_02);
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          SibTr.exception(this, tc, e);
  
                      // Something went badly wrong closing the convesation - take down the
                      // connection.
                      connection.invalidate(true, e, "SIConnectionLostException thrown during conversation close"); // D224570
                  }
              } else {
                  conversation.setDefaultReceiveListener(rl);
                  try {
                      connection.startNewConversation(conversation);
                  } catch (SIResourceException e) {
                      // No FFDC code needed
                      // (it will have been FFDC'ed at source)
                      try {
                          conversation.close();
                      } catch (SIConnectionLostException e2) {
                          // No FFDC code needed
                          // (it is already broken - we don't care)
                      }
                      connection.invalidate(true, e, "Resource exception thrown when starting new conversation");
                  }
              }
          }
          // end F176003
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "ready");
      }