def METHOD_NAME(self, simulation: "Simulation"):
    if simulation not in self.simdata:
        raise AdapterError("Simulation was not prepared")
    try:
        report("Simulating...", level=2)
        pc = self.engine.ParallelContext()
        pc.set_maxstep(10)
        self.engine.finitialize(self.initial)
        simulation.start_progress(simulation.duration)
        for oi, i in simulation.step_progress(simulation.duration, 1):
            t = time.time()
            pc.psolve(i)
            simulation.progress(i)
            if os.path.exists("interrupt_neuron"):
                report("Iterrupt requested. Stopping simulation.", level=1)
                break
        report("Finished simulation.", level=2)
    finally:
        result = self.simdata[simulation].result
        del self.simdata[simulation]
    return result