public boolean matchesMessage(AcMessageDetailVo vo) {
   if (vo.hasJourneyId() || vo.hasContainerNumber()) {
     if (!isScanDerived()) return false;
     if (!hasJourneyId(vo.getJourneyId())) return false;
     if (!hasContainerNumber(vo.getContainerNumber())) return false;
   } else if (vo.hasParentNest()) {
     if (!isScanUnknown()) return false;
     if (!hasContainerNumber(vo.getParentNest().getSerialNumber())) return false;
   } else {
     if (!isScanPhysical()) return false;
   }
   return true;
 }
 public static AcEdiUpuResdit11ReceptacleGroup createReceptacleGroupFromMessage(
     AcMessageDetailVo vo) {
   AcEdiUpuResdit11ReceptacleGroup e = new AcEdiUpuResdit11ReceptacleGroup();
   if (vo.hasJourneyId() || vo.hasContainerNumber()) {
     e.setJourneyId(vo.getJourneyId());
     e.setContainerNumber(vo.getContainerNumber());
     e.setScanDerived();
   } else if (vo.hasParentNest()) {
     e.setContainerNumber(vo.getParentNest().getSerialNumber());
     e.setScanUnknown();
   } else e.setScanPhysical();
   return e;
 }