@typecheck((ExperimentUsage, basestring, typecheck.NONE), SessionId)
    def _process_use(self, use, reservation_id):
        if use is not None:
            if use == self._db_manager.forbidden_access:
                return ForbiddenReservationResult()
            if use.end_date is None:
                log.log(UserProcessor, log.level.Debug, "Reservation %s is running since end_time is None" % reservation_id)
                return RunningReservationResult()
            storage_path = self._cfg_manager.get_value('core_store_students_programs_path')
            use.load_files(storage_path)
            return FinishedReservationResult(use)

        try:
            # We don't actually care about the result. The question is: has it expired or is it running?
            status = self._coordinator.get_reservation_status(reservation_id.id)
            if status.status in WebLabSchedulingStatus.NOT_USED_YET_EXPERIMENT_STATUS:
                return WaitingReservationResult()
            else:
                log.log(UserProcessor, log.level.Debug, "Reservation %s is running due to status %r" % (reservation_id, status))
                return RunningReservationResult()
        except coord_exc.ExpiredSessionError, ese:
            log.log(UserProcessor, log.level.Debug, "Reservation %s is cancelled due to expired session: %s" % (reservation_id, ese))
            return CancelledReservationResult()
Included for symmetry with assert_is_none.
dataset/ETHPy150Open weblabdeusto/weblabdeusto/server/src/weblab/core/user_processor.py/UserProcessor._process_use--crossover with--dataset/ETHPy150Open JetBrains/python-skeletons/nose/tools/__init__.py/assert_is_not_none