code: private PhysicalEntity getMappedPE(physicalEntityParticipant pep, Model newModel)
  	{
  		String id = pep2PE.get(pep.getUri());
  		physicalEntity pe2er = pep.getPHYSICAL_ENTITY();
  		
  		if(id == null || pe2er == null)
  			throw new IllegalAccessError("Illegal pEP (cannot convert): " 
  				+ pep.getUri());
  		
  		BioPAXElement pe = newModel.getByID(id);
  		String inf = "pEP " + pep + " that contains " 
  			+ pe2er.getModelInterface().getSimpleName();
  		if(!isSimplePhysicalEntity(pe2er)) {
  			if(pe == null) {
  				if(log.isDebugEnabled())
  					log.debug(inf + " gets new ID: " + pe2er.getUri());
  				pe = newModel.getByID(pe2er.getUri());
  			} else { // error: complex and basic p.entity's pEP 
  				throw new IllegalAccessError("Illegal conversion of pEP: " + inf); 
  			}
  		} else if(pe == null){
  			// for a pEP having a simple PE, a new PE should be created
  			throw new IllegalAccessError("No PE for: " + inf
  					+ " found in the new Model");
  		}
  		
  		return (PhysicalEntity) pe;
  	}
docs: /*
  pEP->PE; pE->ER class mapping was done for "simple" entities;
  for complex and the "basic" pE, it is pE->PE mapping
  (although pEPs were skipped, their properties are to save anyway)