public override CellState Evolve(AliveNeighborsCount aliveNeighborsCount)
 {
     if (aliveNeighborsCount.Equals(TO_BECOME_ALIVE))
     {
         return new Alive();
     }
     return new Dead();
 }
 public override CellState Evolve(AliveNeighborsCount aliveNeighborsCount)
 {
     if(aliveNeighborsCount.Equals(AliveNeighborsCount.TWO_NEIGHBORS)) return new Alive();
     if(aliveNeighborsCount.Equals(AliveNeighborsCount.THREE_NEIGHBORS)) return new Alive();
     return new Dead();
 }
 public Transition(CellState cellState, AliveNeighborsCount aliveNeighborsCount)
 {
     _cellState = cellState;
     _aliveNeighborsCount = aliveNeighborsCount;
 }
 public abstract CellState Evolve(AliveNeighborsCount aliveNeighborsCount);