docs: private final Subject getSubjectForRecovery(ManagedConnectionFactory mcf, Serializable xaresinfo) throws Exception {
          final boolean trace = TraceComponent.isAnyTracingEnabled();
          if (trace && tc.isEntryEnabled())
              Tr.entry(this, tc, "getSubjectForRecovery", recoveryAuthDataRef);
  
          String authDataID = null;
          if (recoveryAuthDataRef != null) {
              authDataID = (String) recoveryAuthDataRef.getProperty(ID);
              if (authDataID == null ||
                  DEFAULT_PATTERN.matcher(authDataID).matches() ||
                  DEFAULT_NESTED_PATTERN.matcher(authDataID).matches()) {
                  authDataID = (String) recoveryAuthDataRef.getProperty("config.displayId");
              }
          }
  
          // If recoveryAuthDataRef isn't specified, then use the container managed auth alias, if there is one
          if (authDataID == null && xaresinfo != null) {
              @SuppressWarnings("unchecked")
              ArrayList<Byte> byteList = (ArrayList<Byte>) xaresinfo;
              byte[] bytes = new byte[byteList.size()];
              int i = 0;
              for (Byte b : byteList)
                  bytes[i++] = b;
              ResourceInfo info = (ResourceInfo) ConnectorService.deserialize(bytes);
              if (info.getAuth() == ResourceInfo.AUTH_CONTAINER) {
                  for (ResourceInfo.Property loginConfigProp : info.getLoginPropertyList())
                      if ("DefaultPrincipalMapping".equals(loginConfigProp.getName()))
                          authDataID = loginConfigProp.getValue();
                  // If no auth-data in recovery info, then use the default container managed auth alias (if any)
                  if (authDataID == null)
                      authDataID = getContainerAuthDataID();
              }
  
              if (trace && tc.isDebugEnabled())
                  Tr.debug(this, tc, "container managed auth", authDataID);
          }
  
          Subject subject = null;
          if (authDataID != null) {
              AuthDataService authDataSvc = ((ConnectorServiceImpl) getConnectorService()).authDataServiceRef.getServiceWithException();
              Map<String, Object> loginData = Collections.singletonMap("com.ibm.mapping.authDataAlias", (Object) authDataID);
              subject = authDataSvc.getSubject(mcf, null, loginData);
          }
  
          if (trace && tc.isEntryEnabled())
              Tr.exit(this, tc, "getSubjectForRecovery", CommonFunction.toString(subject));
          return subject;
      }