@@ -0,0 +1,1866 @@
+package com.edinarobotics.utils.autonomous;%0A%0A/**%0A * An autonomous step that will run multiple sub-steps in sequence.%0A */%0Apublic class SequentialAutonomousStepGroup extends AutonomousStep%7B%0A    private AutonomousStep%5B%5D steps;%0A    private int currentStep;%0A    %0A    /**%0A     * Constructs a SequentialAutonomousStepGroup that will run the given%0A     * steps in sequence.%0A     * @param steps the array of %7B@link AutonomousStep%7D objects to run in%0A     * sequence.%0A     */%0A    public SequentialAutonomousStepGroup(AutonomousStep%5B%5D steps)%7B%0A        this.steps = steps;%0A        currentStep = -1;%0A    %7D%0A    %0A    /**%0A     * Runs the given steps in sequence.%0A     */%0A    public void run()%7B%0A        if(currentStep%3E=steps.length)%7B%0A            //We're done, don't use too large an index.%0A            return;%0A        %7D%0A        if(currentStep == -1)%7B%0A            //Initially, start the first step.%0A            currentStep++;%0A            steps%5BcurrentStep%5D.start();%0A        %7D%0A        if(!steps%5BcurrentStep%5D.isFinished())%7B%0A            //The current step's not done, run it.%0A            steps%5BcurrentStep%5D.run();%0A        %7D%0A        else%7B%0A            //The current step's done, stop it.%0A            steps%5BcurrentStep%5D.stop();%0A            currentStep++;%0A            //Start the next one if there is a next step.%0A            if(currentStep%3Csteps.length)%7B%0A                steps%5BcurrentStep%5D.start();%0A            %7D%0A        %7D%0A    %7D%0A    %0A    /**%0A     * Stops the current step if we are interrupted.%0A     */%0A    public void stop()%7B%0A        if(currentStep%3Csteps.length)%7B%0A            steps%5BcurrentStep%5D.stop();%0A        %7D%0A    %7D%0A    %0A    /**%0A     * Returns %7B@code true%7D if all the steps have finished running.%0A     * @return %7B@code true%7D if all steps have run and been stopped,%0A     * %7B@code false%7D otherwise.%0A     */%0A    public boolean isFinished()%7B%0A        return currentStep%3E=steps.length;%0A    %7D%0A%7D%0A

Add SequentialAutonomousStepGroup to handle running steps in sequence.