private boolean hasMonitoringError(MonitoredVehicleJourney mvj) {
   if (mvj.isMonitored() != null && mvj.isMonitored()) {
     return false;
   }
   List<String> errors = mvj.getMonitoringError();
   return errors != null && !errors.isEmpty();
 }
  @Override
  public AbstractServiceDeliveryStructure filter(
      ServiceDelivery delivery, AbstractServiceDeliveryStructure moduleDelivery) {
    if (!(moduleDelivery instanceof VehicleMonitoringDeliveryStructure)) {
      return moduleDelivery;
    }
    VehicleMonitoringDeliveryStructure vm = (VehicleMonitoringDeliveryStructure) moduleDelivery;
    for (VehicleActivityStructure activity : vm.getVehicleActivity()) {
      MonitoredVehicleJourney mvj = activity.getMonitoredVehicleJourney();
      if (!hasMonitoringError(mvj)) {
        _layoverService.updateVehicle(activity);
      }

      if (mvj.getVehicleRef() != null) {
        String vehicleRef = mvj.getVehicleRef().getValue();
        if (_layoverService.isVehiclePausedAtLayoverLocation(vehicleRef)) {
          OneBusAwayVehicleActivity vaExtension = new OneBusAwayVehicleActivity();
          vaExtension.setLayover(true);
          ExtensionsStructure extensions = new ExtensionsStructure();
          extensions.setAny(vaExtension);
          activity.setExtensions(extensions);
        }
      }
    }
    return moduleDelivery;
  }