// Path: src/com/sproutlife/model/GameClock.java
// public class GameClock {
//     private int time;
// 
//     public GameClock() {
//         time = 0;
//     }
// 
//     public int getTime() {
//         return time;
//     }
// 
//     void increment() {
//         time++;
//     }
// 
//     void reset() {
//         this.time = 0;
//     }
// }
// 
// Path: src/com/sproutlife/model/seed/Seed.java
// public class Seed {
//     
//     protected SeedSproutPattern pattern;       
//     public Point position = null;    
//     public Rotation rotation;    
//     public int seedBorder = 1;   
//     public Point parentPosition;
//     //Organism organism;   
// 
//     public Seed(SeedSproutPattern pattern, Rotation r) {    
//         this.pattern = pattern;
//         this.rotation = r;
//     }      
//     
//     public Seed(SeedSproutPattern pattern) {
//         this(pattern, Rotations.get());
//     }
//      
//     public Rotation getRotation() {
//         return rotation;
//     }
//     
//     public Point getPosition() {        
//         return position;        
//     }
//     
//     public void setPosition(int x, int y) {
//         this.position = new Point(x,y);
//     }                  
//     
//     public int getSeedBorder() {
//         return seedBorder;
//     }
//     
//     public void setSeedBorder(int b) {
//         this.seedBorder = b;
//     }
//     
//     public Point getParentPosition() {
//         return parentPosition;
//     }
//     
//     public void setParentPosition(Point parentPosition) {
//         this.parentPosition = parentPosition;
//     }
//     /*
//     public Organism getOrganism() {
//         return organism;
//     }
//     
//     public void setOrganism(Organism organism) {
//         this.organism = organism;
//     }
//     */
//     
//     public SeedSproutPattern getSeedSproutPattern() {
//         return pattern;
//     }
//     
//     public BitPattern getSeedPattern() {
//         return pattern.getSeedPattern();
//     }
//     
//     public BitPattern getSproutPattern() {
//         return pattern.getSproutPattern();
//     }       
//     
//     public boolean getSeedBit(int x, int y) {       
//         return getSeedPattern().getBit(x, y, getRotation());
//     }
//     
//     public boolean getSproutBit(int x, int y) {       
//         return getSproutPattern().getBit(x, y, getRotation());
//     }
//      
//     public int getSeedWidth() {
//         return getSeedPattern().getWidth(getRotation());
//     }
//     
//     public int getSeedHeight() {
//         return getSeedPattern().getHeight(getRotation());
//     }
//         
//     public int getSproutWidth() {
//         return getSproutPattern().getWidth(getRotation());
//     }
//         
//     public int getSproutHeight() {
//         return getSproutPattern().getHeight(getRotation());
//     }
//         
//     public Point getSproutOffset() {
//         return Rotations.offsetToBoard(
//                 pattern.getSproutOffset(), 
//                 getSeedPattern(), 
//                 getSproutPattern(), 
//                 getRotation());
//     }
//     
//     public Point getSproutPosition() {
//         Point sproutOffset = getSproutOffset();
//         return new Point(position.x + sproutOffset.x, position.y + sproutOffset.y);
//     }
//     
//     public Point getSproutCenter() {        
//         Point sproutPosition = getSproutPosition();
//         Point sproutCenter = getSproutPattern().getCenter(getRotation());       
// 
//         int ssX = sproutPosition.x+sproutCenter.x;
//         int ssY = sproutPosition.y+sproutCenter.y;
//         
//         return new Point(ssX, ssY);        
//     }
//     
//     public Point getSeedOnBit() {
//         return pattern.getSeedPattern().getOnBit(getRotation());
//     }
//     
//     public Point getSeedOnPosition() {
//         Point pos = this.getPosition();
//         Point onOffset = this.getSeedOnBit();        
//         return new Point(pos.x+onOffset.x,pos.y+onOffset.y);
//     }
// }


import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Deque;
import java.util.HashSet;
import java.util.List;
import com.sproutlife.model.GameClock;
import com.sproutlife.model.seed.Seed;
        boolean result = c.getOrganism().removeCell(c);

        if (updateBoard) {
            // We don't want to update the board if we just reset it.
            getBoard().removeCell(c);
        }

        return result;
    }

    public Cell addCell(int x, int y, Organism org) {
        Cell c = org.addCell(x, y);
        if (c != null) {
            getBoard().setCell(c);
        }
        return c;
    }

    /*
     * Add a cell that's been created but not yet added
     */
    public void addCell(Cell c) {
        c.getOrganism().addCell(c);
        getBoard().setCell(c);
    }

    /*
     * Create a cell but don't add it
     */
    public Cell createCell(int x, int y, Organism o) {
// Path: src/com/sproutlife/model/GameClock.java
// public class GameClock {
//     private int time;
// 
//     public GameClock() {
//         time = 0;
//     }
// 
//     public int getTime() {
//         return time;
//     }
// 
//     void increment() {
//         time++;
//     }
// 
//     void reset() {
//         this.time = 0;
//     }
// }
// 
// Path: src/com/sproutlife/model/seed/Seed.java
// public class Seed {
//     
//     protected SeedSproutPattern pattern;       
//     public Point position = null;    
//     public Rotation rotation;    
//     public int seedBorder = 1;   
//     public Point parentPosition;
//     //Organism organism;   
// 
//     public Seed(SeedSproutPattern pattern, Rotation r) {    
//         this.pattern = pattern;
//         this.rotation = r;
//     }      
//     
//     public Seed(SeedSproutPattern pattern) {
//         this(pattern, Rotations.get());
//     }
//      
//     public Rotation getRotation() {
//         return rotation;
//     }
//     
//     public Point getPosition() {        
//         return position;        
//     }
//     
//     public void setPosition(int x, int y) {
//         this.position = new Point(x,y);
//     }                  
//     
//     public int getSeedBorder() {
//         return seedBorder;
//     }
//     
//     public void setSeedBorder(int b) {
//         this.seedBorder = b;
//     }
//     
//     public Point getParentPosition() {
//         return parentPosition;
//     }
//     
//     public void setParentPosition(Point parentPosition) {
//         this.parentPosition = parentPosition;
//     }
//     /*
//     public Organism getOrganism() {
//         return organism;
//     }
//     
//     public void setOrganism(Organism organism) {
//         this.organism = organism;
//     }
//     */
//     
//     public SeedSproutPattern getSeedSproutPattern() {
//         return pattern;
//     }
//     
//     public BitPattern getSeedPattern() {
//         return pattern.getSeedPattern();
//     }
//     
//     public BitPattern getSproutPattern() {
//         return pattern.getSproutPattern();
//     }       
//     
//     public boolean getSeedBit(int x, int y) {       
//         return getSeedPattern().getBit(x, y, getRotation());
//     }
//     
//     public boolean getSproutBit(int x, int y) {       
//         return getSproutPattern().getBit(x, y, getRotation());
//     }
//      
//     public int getSeedWidth() {
//         return getSeedPattern().getWidth(getRotation());
//     }
//     
//     public int getSeedHeight() {
//         return getSeedPattern().getHeight(getRotation());
//     }
//         
//     public int getSproutWidth() {
//         return getSproutPattern().getWidth(getRotation());
//     }
//         
//     public int getSproutHeight() {
//         return getSproutPattern().getHeight(getRotation());
//     }
//         
//     public Point getSproutOffset() {
//         return Rotations.offsetToBoard(
//                 pattern.getSproutOffset(), 
//                 getSeedPattern(), 
//                 getSproutPattern(), 
//                 getRotation());
//     }
//     
//     public Point getSproutPosition() {
//         Point sproutOffset = getSproutOffset();
//         return new Point(position.x + sproutOffset.x, position.y + sproutOffset.y);
//     }
//     
//     public Point getSproutCenter() {        
//         Point sproutPosition = getSproutPosition();
//         Point sproutCenter = getSproutPattern().getCenter(getRotation());       
// 
//         int ssX = sproutPosition.x+sproutCenter.x;
//         int ssY = sproutPosition.y+sproutCenter.y;
//         
//         return new Point(ssX, ssY);        
//     }
//     
//     public Point getSeedOnBit() {
//         return pattern.getSeedPattern().getOnBit(getRotation());
//     }
//     
//     public Point getSeedOnPosition() {
//         Point pos = this.getPosition();
//         Point onOffset = this.getSeedOnBit();        
//         return new Point(pos.x+onOffset.x,pos.y+onOffset.y);
//     }
// }


// Path: src/com/sproutlife/model/echosystem/Echosystem.java
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Deque;
import java.util.HashSet;
import java.util.List;
import com.sproutlife.model.GameClock;
import com.sproutlife.model.seed.Seed;

        boolean result = c.getOrganism().removeCell(c);

        if (updateBoard) {
            // We don't want to update the board if we just reset it.
            getBoard().removeCell(c);
        }

        return result;
    }

    public Cell addCell(int x, int y, Organism org) {
        Cell c = org.addCell(x, y);
        if (c != null) {
            getBoard().setCell(c);
        }
        return c;
    }

    /*
     * Add a cell that's been created but not yet added
     */
    public void addCell(Cell c) {
        c.getOrganism().addCell(c);
        getBoard().setCell(c);
    }

    /*
     * Create a cell but don't add it
     */
    public Cell createCell(int x, int y, Organism o) {
        return o.createCell(x, y);