public interface State { public abstract List generate(); public abstract boolean isTerminal(); public abstract void setEval(int eval); public abstract int getEval(); } public class ChessState extends State { ... public List generate() { ... } }