@@ -0,0 +1,1238 @@
+package com.edinarobotics.utils.autonomous;%0A%0Aimport edu.wpi.first.wpilibj.Timer;%0A%0A/**%0A * An %7B@link AutonomousStep%7D that can be used to add a timeout to another%0A * %7B@link AutonomousStep%7D. This step will be finished when either the given%0A * time has elapsed or the contained step has finished, whichever comes first.%0A */%0Apublic class TimeoutStep extends AutonomousStep%7B%0A    private AutonomousStep step;%0A    private double timeout;%0A    private Timer timer;%0A    %0A    /**%0A     * Constructs a new TimeoutStep that ends the given %7B@link AutonomousStep%7D%0A     * when it is finished or if the given time has elapsed.%0A     * @param step The %7B@link AutonomousStep%7D to run.%0A     * @param timeout The maximum amount of time that %7B@code step%7D is allowed%0A     * to run.%0A     */%0A    public TimeoutStep(AutonomousStep step, double timeout)%7B%0A        this.step = step;%0A        this.timeout = timeout;%0A        timer = new Timer();%0A    %7D%0A    %0A    public void start()%7B%0A        timer.reset();%0A        timer.start();%0A        step.start();%0A    %7D%0A    %0A    public void run()%7B%0A        step.run();%0A    %7D%0A    %0A    public void stop()%7B%0A        step.stop();%0A    %7D%0A    %0A    public boolean isFinished()%7B%0A        return step.isFinished() %7C%7C (timer.get() %3E= timeout);%0A    %7D%0A%7D%0A

Add TimeoutStep to make it possible to add a timeout to autonomous steps.