ConnectFourState extends TwoDimensionalBoardGameState { @SuppressWarnings("unchecked") @Override public <T extends BoardGameState> T copy() { return (T) new ConnectFourState(this); } ConnectFourState();  ConnectFourState(ConnectFourState state);  ConnectFourState(int[][] board, int nextPlay, List<Integer> win); @Override boolean endState(); @SuppressWarnings("unchecked") @Override Set<T> possibleBoardGameStates(T currentState); @SuppressWarnings("unchecked") @Override T copy(); @Override List<Integer> getWinners(); @Override void setupStartingBoard(); @Override int getBoardWidth(); @Override int getBoardHeight(); @Override char[] getPlayerSymbols(); @Override Color[] getPlayerColors(); @Override boolean moveOnePiece(); @Override boolean moveSinglePoint(Point goTo); @Override boolean moveDoublePoint(Point goTo, Point moveTo);  }
@Test public void testCopy() { assertEquals(start, start.copy()); assertEquals(test1, test1.copy()); assertEquals(test2, test2.copy()); }