@Override public String reasonForIllegality(State s) {
		if (s.currentPlayer() != player) return "it's not your turn";
		PlayerState p = s.playerState(player);
		if (p.drawn_card != null) return "you drew a card and now must decide what other card to draw";
		if (p.drawn_missions != null) return "you drew mission cards and now must decide which to keep";
		if (p.ncars < railway.length) return "you do not have enough cars";
		if (s.isClaimed(railway)) return "that railway has already been claimed";
		if (p.railways.contains(railway.dual)) return "you already own the other railway between these cities";
		if (!p.hand.containsAll(cards)) return "you do not have these cards you claim to have";
		if (!railway.costs(cards)) return "the cards offered do not correspond to the railway cost";
		return null;
	}