// Path: cas-core/src/main/java/com/ghjansen/cas/core/exception/InvalidStateException.java
// public class InvalidStateException extends Exception {
// 
//     /**
//      * Serialization management
//      */
//     private static final long serialVersionUID = -7435119307025647318L;
// 
// }
// 
// Path: cas-core/src/main/java/com/ghjansen/cas/core/exception/InvalidTransitionException.java
// public class InvalidTransitionException extends Exception {
// 
//     /**
//      * Serialization management
//      */
//     private static final long serialVersionUID = 1848434169756515614L;
// 
// }
// 
// Path: cas-core/src/main/java/com/ghjansen/cas/core/physics/Cell.java
// public abstract class Cell<A extends State, N extends Transition> {
// 
//     protected A state;
//     protected N transition;
// 
//     protected Cell(N transition) throws InvalidTransitionException {
//         if (transition == null) {
//             throw new InvalidTransitionException();
//         }
//         this.transition = transition;
//         this.state = (A) transition.getState();
//     }
// 
//     protected Cell(A state) throws InvalidStateException {
//         if (state == null) {
//             throw new InvalidStateException();
//         }
//         this.state = state;
//     }
// 
//     public A getState() {
//         return state;
//     }
// 
//     public N getTransition() {
//         return this.transition;
//     }
// 
// }
// 
// Path: cas-unidimensional/src/main/java/com/ghjansen/cas/unidimensional/ca/UnidimensionalState.java
// public final class UnidimensionalState extends State {
// 
//     public UnidimensionalState(String name, int value) {
//         super(name, value);
//     }
// 
// }
// 
// Path: cas-unidimensional/src/main/java/com/ghjansen/cas/unidimensional/ca/UnidimensionalTransition.java
// public final class UnidimensionalTransition extends Transition<UnidimensionalCombination, UnidimensionalState> {
// 
//     public UnidimensionalTransition(UnidimensionalCombination combination, UnidimensionalState state)
//             throws InvalidCombinationException, InvalidStateException {
//         super(combination, state);
//     }
// 
// }


import com.ghjansen.cas.core.exception.InvalidStateException;
import com.ghjansen.cas.core.exception.InvalidTransitionException;
import com.ghjansen.cas.core.physics.Cell;
import com.ghjansen.cas.unidimensional.ca.UnidimensionalState;
import com.ghjansen.cas.unidimensional.ca.UnidimensionalTransition;
/*
 * CAS - Cellular Automata Simulator
 * Copyright (C) 2016  Guilherme Humberto Jansen
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.ghjansen.cas.unidimensional.physics;


/**
 * @author Guilherme Humberto Jansen (contact.ghjansen@gmail.com)
 */
public final class UnidimensionalCell extends Cell<UnidimensionalState, UnidimensionalTransition> {

    public UnidimensionalCell(UnidimensionalTransition transition) throws InvalidTransitionException {
        super(transition);
    }

    public UnidimensionalCell(UnidimensionalState state) throws InvalidStateException {
// Path: cas-core/src/main/java/com/ghjansen/cas/core/exception/InvalidStateException.java
// public class InvalidStateException extends Exception {
// 
//     /**
//      * Serialization management
//      */
//     private static final long serialVersionUID = -7435119307025647318L;
// 
// }
// 
// Path: cas-core/src/main/java/com/ghjansen/cas/core/exception/InvalidTransitionException.java
// public class InvalidTransitionException extends Exception {
// 
//     /**
//      * Serialization management
//      */
//     private static final long serialVersionUID = 1848434169756515614L;
// 
// }
// 
// Path: cas-core/src/main/java/com/ghjansen/cas/core/physics/Cell.java
// public abstract class Cell<A extends State, N extends Transition> {
// 
//     protected A state;
//     protected N transition;
// 
//     protected Cell(N transition) throws InvalidTransitionException {
//         if (transition == null) {
//             throw new InvalidTransitionException();
//         }
//         this.transition = transition;
//         this.state = (A) transition.getState();
//     }
// 
//     protected Cell(A state) throws InvalidStateException {
//         if (state == null) {
//             throw new InvalidStateException();
//         }
//         this.state = state;
//     }
// 
//     public A getState() {
//         return state;
//     }
// 
//     public N getTransition() {
//         return this.transition;
//     }
// 
// }
// 
// Path: cas-unidimensional/src/main/java/com/ghjansen/cas/unidimensional/ca/UnidimensionalState.java
// public final class UnidimensionalState extends State {
// 
//     public UnidimensionalState(String name, int value) {
//         super(name, value);
//     }
// 
// }
// 
// Path: cas-unidimensional/src/main/java/com/ghjansen/cas/unidimensional/ca/UnidimensionalTransition.java
// public final class UnidimensionalTransition extends Transition<UnidimensionalCombination, UnidimensionalState> {
// 
//     public UnidimensionalTransition(UnidimensionalCombination combination, UnidimensionalState state)
//             throws InvalidCombinationException, InvalidStateException {
//         super(combination, state);
//     }
// 
// }


// Path: cas-unidimensional/src/main/java/com/ghjansen/cas/unidimensional/physics/UnidimensionalCell.java
import com.ghjansen.cas.core.exception.InvalidStateException;
import com.ghjansen.cas.core.exception.InvalidTransitionException;
import com.ghjansen.cas.core.physics.Cell;
import com.ghjansen.cas.unidimensional.ca.UnidimensionalState;
import com.ghjansen.cas.unidimensional.ca.UnidimensionalTransition;

/*
 * CAS - Cellular Automata Simulator
 * Copyright (C) 2016  Guilherme Humberto Jansen
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.ghjansen.cas.unidimensional.physics;


/**
 * @author Guilherme Humberto Jansen (contact.ghjansen@gmail.com)
 */
public final class UnidimensionalCell extends Cell<UnidimensionalState, UnidimensionalTransition> {

    public UnidimensionalCell(UnidimensionalTransition transition) throws InvalidTransitionException {
        super(transition);
    }

    public UnidimensionalCell(UnidimensionalState state) throws InvalidStateException {
        super(state);