code: protected void completeRemoveMethod(ContainerTx tx) // d647928
                      throws RemoteException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "completeRemoveMethod: " + this);
  
          long pmiCookie = 0;
          if (pmiBean != null) {
              pmiCookie = pmiBean.initialTime(EJBPMICollaborator.REMOVE_RT);
          }
  
          EJBThreadData threadData = EJSContainer.getThreadData();
  
          // A remove method (@Remove) was called, and now that the method
          // (and transaction) have completed, remove the bean.            390657
          threadData.pushContexts(this);
          try {
              remove();
          } catch (RemoveException rex) {
              // This would be an internal EJB Container error, as RemoveException
              // should only be thrown if the bean is in a global tx, and since
              // this is afterCompletion, that cannot be true.  However, since this
              // is on the throws clause, it must be handled.... just wrap it.
              throw ExceptionUtil.EJBException("Remove Failed", rex);
          } finally {
              if (tx != null) {
                  tx.ivRemoveBeanO = null;
              }
  
              threadData.popContexts();
  
              if (pmiBean != null) {
                  pmiBean.finalTime(EJBPMICollaborator.REMOVE_RT, pmiCookie);
              }
  
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "completeRemoveMethod");
          }
      }
docs: Completes the removal of the bean after a Remove method has been called.