Program: 68100
Project: 68100
Buggy source:
/** 
 * PUBLIC: Return a session broker that behaves as a client session broker.  An aquire session broker is done under the covers on each session inside the session broker, and a new broker is returned. NOTE: when finished with the client broker, it should be releases.  See releaseClientSessionBroker.
 */
public SessionBroker acquireClientSessionBroker(){
  log(SessionLog.FINER,SessionLog.CONNECTION,"String_Node_Str");
  SessionBroker clientBroker=copySessionBroker();
  clientBroker.parent=this;
  clientBroker.getIdentityMapAccessorInstance().setIdentityMapManager(getIdentityMapAccessorInstance().getIdentityMapManager());
  clientBroker.commitManager=getCommitManager();
  clientBroker.commandManager=getCommandManager();
  clientBroker.externalTransactionController=getExternalTransactionController();
  String sessionName;
  AbstractSession ssession;
  Iterator names=this.getSessionsByName().keySet().iterator();
  while (names.hasNext()) {
    sessionName=(String)names.next();
    ssession=getSessionForName(sessionName);
    if (ssession instanceof org.eclipse.persistence.sessions.server.ServerSession) {
      if (ssession.getProject().hasIsolatedClasses()) {
        throw ValidationException.isolatedDataNotSupportedInSessionBroker(sessionName);
      }
      clientBroker.internalRegisterSession(sessionName,((org.eclipse.persistence.sessions.server.ServerSession)ssession).acquireClientSession());
    }
 else {
      throw ValidationException.cannotAcquireClientSessionFromSession();
    }
  }
  clientBroker.initializeSequencing();
  return clientBroker;
}

Fixed version (ground truth):
/** 
 * PUBLIC: Return a session broker that behaves as a client session broker.  An acquire session broker is done under the covers on each session inside the session broker, and a new broker is returned. NOTE: when finished with the client broker, it should be releases.  See releaseClientSessionBroker.
 */
public SessionBroker acquireClientSessionBroker(){
  log(SessionLog.FINER,SessionLog.CONNECTION,"String_Node_Str");
  SessionBroker clientBroker=copySessionBroker();
  clientBroker.parent=this;
  clientBroker.getIdentityMapAccessorInstance().setIdentityMapManager(getIdentityMapAccessorInstance().getIdentityMapManager());
  clientBroker.commitManager=getCommitManager();
  clientBroker.commandManager=getCommandManager();
  clientBroker.externalTransactionController=getExternalTransactionController();
  clientBroker.setServerPlatform(getServerPlatform());
  String sessionName;
  AbstractSession ssession;
  Iterator names=this.getSessionsByName().keySet().iterator();
  while (names.hasNext()) {
    sessionName=(String)names.next();
    ssession=getSessionForName(sessionName);
    if (ssession instanceof org.eclipse.persistence.sessions.server.ServerSession) {
      if (ssession.getProject().hasIsolatedClasses()) {
        throw ValidationException.isolatedDataNotSupportedInSessionBroker(sessionName);
      }
      clientBroker.internalRegisterSession(sessionName,((org.eclipse.persistence.sessions.server.ServerSession)ssession).acquireClientSession());
    }
 else {
      throw ValidationException.cannotAcquireClientSessionFromSession();
    }
  }
  clientBroker.initializeSequencing();
  return clientBroker;
}