// Path: src/com/sproutlife/model/step/GameStep.java
// public static enum StepType { 
//     GAME_STEP, 
//     LIFE_STEP, 
//     SPROUT_STEP, 
//     MUTATION_STEP, 
//     PRUNE_STEP,
//     COLOR_STEP,
//     STEP_BUNDLE
// }
// 
// Path: src/com/sproutlife/model/step/GameStepEvent.java
// public class GameStepEvent {
// 
//     StepType stepType;
//     
//     public GameStepEvent(StepType stepType) {
//         this.stepType = stepType;
//     }
//     
//     public StepType getStepType() {
//         return stepType;
//     }
// }
// 
// Path: src/com/sproutlife/model/step/GameStepListener.java
// public interface GameStepListener {
//     
//     public void stepPerformed(GameStepEvent event);
// 
// }


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import com.sproutlife.model.step.GameStep.StepType;
import com.sproutlife.model.step.GameStepEvent;
import com.sproutlife.model.step.GameStepListener;
    public boolean isPlaying() {
        return playGame;
    }

    public int getSleepDelay() {
        return sleepDelay;
    }

    public void setSleepDelay(int sleepDelay) {
        this.sleepDelay = sleepDelay;
    }

    public int getIterationsPerEvent() {
        return iterationsPerEvent;
    }

    public void setIterationsPerEvent(int iterationsPerEvent) {
        this.iterationsPerEvent = iterationsPerEvent;
    }

    public void addGameStepListener(GameStepListener gameStepListener) {
        gameStepListeners.add(gameStepListener);
    }

    public void removeGameStepListener(GameStepListener gameStepListener) {
        gameStepListeners.remove(gameStepListener);
    }

    private void fireStepBundlePerformed() {
        for (GameStepListener gsl : gameStepListeners) {
// Path: src/com/sproutlife/model/step/GameStep.java
// public static enum StepType { 
//     GAME_STEP, 
//     LIFE_STEP, 
//     SPROUT_STEP, 
//     MUTATION_STEP, 
//     PRUNE_STEP,
//     COLOR_STEP,
//     STEP_BUNDLE
// }
// 
// Path: src/com/sproutlife/model/step/GameStepEvent.java
// public class GameStepEvent {
// 
//     StepType stepType;
//     
//     public GameStepEvent(StepType stepType) {
//         this.stepType = stepType;
//     }
//     
//     public StepType getStepType() {
//         return stepType;
//     }
// }
// 
// Path: src/com/sproutlife/model/step/GameStepListener.java
// public interface GameStepListener {
//     
//     public void stepPerformed(GameStepEvent event);
// 
// }


// Path: src/com/sproutlife/model/GameThread.java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import com.sproutlife.model.step.GameStep.StepType;
import com.sproutlife.model.step.GameStepEvent;
import com.sproutlife.model.step.GameStepListener;

    public boolean isPlaying() {
        return playGame;
    }

    public int getSleepDelay() {
        return sleepDelay;
    }

    public void setSleepDelay(int sleepDelay) {
        this.sleepDelay = sleepDelay;
    }

    public int getIterationsPerEvent() {
        return iterationsPerEvent;
    }

    public void setIterationsPerEvent(int iterationsPerEvent) {
        this.iterationsPerEvent = iterationsPerEvent;
    }

    public void addGameStepListener(GameStepListener gameStepListener) {
        gameStepListeners.add(gameStepListener);
    }

    public void removeGameStepListener(GameStepListener gameStepListener) {
        gameStepListeners.remove(gameStepListener);
    }

    private void fireStepBundlePerformed() {
        for (GameStepListener gsl : gameStepListeners) {
            GameStepEvent event = new GameStepEvent(StepType.STEP_BUNDLE);