def METHOD_NAME(self):
    """Return our best estimate of the remaining duration, or None
    if we have no bases for guessing."""
    if (self.end_times is None) or (self.num_received == 0):
        return 2 * self.elapsed_time()  # We have not started the first module yet
    else:
        expected_per_job = self.end_times[self.num_received] / self.num_received
        return expected_per_job * (self.num_jobs - self.num_received)