// Path: src/main/java/com/fluxchess/jcpi/models/GenericChessman.java
// public enum GenericChessman {
// 
// 	PAWN('P'),
// 	KNIGHT('N'),
// 	BISHOP('B'),
// 	ROOK('R'),
// 	QUEEN('Q'),
// 	KING('K');
// 
// 	public static final EnumSet<GenericChessman> promotions = EnumSet.of(KNIGHT, BISHOP, ROOK, QUEEN);
// 	public static final EnumSet<GenericChessman> sliders = EnumSet.of(BISHOP, ROOK, QUEEN);
// 
// 	private final char token;
// 
// 	private GenericChessman(char token) {
// 		this.token = token;
// 	}
// 
// 	private static GenericChessman _valueOf(char token) {
// 		for (GenericChessman chessman : values()) {
// 			if (Character.toLowerCase(token) == Character.toLowerCase(chessman.token)) {
// 				return chessman;
// 			}
// 		}
// 
// 		return null;
// 	}
// 
// 	public static GenericChessman valueOf(char token) {
// 		GenericChessman chessman = _valueOf(token);
// 		if (chessman != null) {
// 			return chessman;
// 		} else {
// 			throw new IllegalArgumentException();
// 		}
// 	}
// 
// 	public static boolean isValid(char token) {
// 		return _valueOf(token) != null;
// 	}
// 
// 	private static GenericChessman _valueOfPromotion(char token) {
// 		for (GenericChessman chessman : promotions) {
// 			if (Character.toLowerCase(token) == Character.toLowerCase(chessman.token)) {
// 				return chessman;
// 			}
// 		}
// 
// 		return null;
// 	}
// 
// 	public static GenericChessman valueOfPromotion(char token) {
// 		GenericChessman chessman = _valueOfPromotion(token);
// 		if (chessman != null) {
// 			return chessman;
// 		} else {
// 			throw new IllegalArgumentException();
// 		}
// 	}
// 
// 	public static boolean isValidPromotion(char token) {
// 		return _valueOfPromotion(token) != null;
// 	}
// 
// 	public boolean isLegalPromotion() {
// 		return promotions.contains(this);
// 	}
// 
// 	public boolean isSliding() {
// 		return sliders.contains(this);
// 	}
// 
// 	public char toCharAlgebraic() {
// 		if (this == PAWN) {
// 			throw new UnsupportedOperationException();
// 		}
// 
// 		return this.token;
// 	}
// 
// 	public char toChar(GenericColor color) {
// 		if (color == null) throw new IllegalArgumentException();
// 
// 		return color.transform(this.token);
// 	}
// 
// }


import com.fluxchess.jcpi.models.GenericChessman;
		}
	}

	public static boolean isValidPromotion(int chessman) {
		switch (chessman) {
			case KNIGHT:
			case BISHOP:
			case ROOK:
			case QUEEN:
				return true;
			case PAWN:
			case KING:
				return false;
			case NOCHESSMAN:
			default:
				throw new IllegalArgumentException();
		}
	}

	public static boolean isSliding(int chessman) {
		switch (chessman) {
			case BISHOP:
			case ROOK:
			case QUEEN:
				return true;
			case PAWN:
			case KNIGHT:
			case KING:
				return false;
			case NOCHESSMAN:
// Path: src/main/java/com/fluxchess/jcpi/models/GenericChessman.java
// public enum GenericChessman {
// 
// 	PAWN('P'),
// 	KNIGHT('N'),
// 	BISHOP('B'),
// 	ROOK('R'),
// 	QUEEN('Q'),
// 	KING('K');
// 
// 	public static final EnumSet<GenericChessman> promotions = EnumSet.of(KNIGHT, BISHOP, ROOK, QUEEN);
// 	public static final EnumSet<GenericChessman> sliders = EnumSet.of(BISHOP, ROOK, QUEEN);
// 
// 	private final char token;
// 
// 	private GenericChessman(char token) {
// 		this.token = token;
// 	}
// 
// 	private static GenericChessman _valueOf(char token) {
// 		for (GenericChessman chessman : values()) {
// 			if (Character.toLowerCase(token) == Character.toLowerCase(chessman.token)) {
// 				return chessman;
// 			}
// 		}
// 
// 		return null;
// 	}
// 
// 	public static GenericChessman valueOf(char token) {
// 		GenericChessman chessman = _valueOf(token);
// 		if (chessman != null) {
// 			return chessman;
// 		} else {
// 			throw new IllegalArgumentException();
// 		}
// 	}
// 
// 	public static boolean isValid(char token) {
// 		return _valueOf(token) != null;
// 	}
// 
// 	private static GenericChessman _valueOfPromotion(char token) {
// 		for (GenericChessman chessman : promotions) {
// 			if (Character.toLowerCase(token) == Character.toLowerCase(chessman.token)) {
// 				return chessman;
// 			}
// 		}
// 
// 		return null;
// 	}
// 
// 	public static GenericChessman valueOfPromotion(char token) {
// 		GenericChessman chessman = _valueOfPromotion(token);
// 		if (chessman != null) {
// 			return chessman;
// 		} else {
// 			throw new IllegalArgumentException();
// 		}
// 	}
// 
// 	public static boolean isValidPromotion(char token) {
// 		return _valueOfPromotion(token) != null;
// 	}
// 
// 	public boolean isLegalPromotion() {
// 		return promotions.contains(this);
// 	}
// 
// 	public boolean isSliding() {
// 		return sliders.contains(this);
// 	}
// 
// 	public char toCharAlgebraic() {
// 		if (this == PAWN) {
// 			throw new UnsupportedOperationException();
// 		}
// 
// 		return this.token;
// 	}
// 
// 	public char toChar(GenericColor color) {
// 		if (color == null) throw new IllegalArgumentException();
// 
// 		return color.transform(this.token);
// 	}
// 
// }


// Path: src/main/java/com/fluxchess/jcpi/internal/x88/PieceType.java
import com.fluxchess.jcpi.models.GenericChessman;

		}
	}

	public static boolean isValidPromotion(int chessman) {
		switch (chessman) {
			case KNIGHT:
			case BISHOP:
			case ROOK:
			case QUEEN:
				return true;
			case PAWN:
			case KING:
				return false;
			case NOCHESSMAN:
			default:
				throw new IllegalArgumentException();
		}
	}

	public static boolean isSliding(int chessman) {
		switch (chessman) {
			case BISHOP:
			case ROOK:
			case QUEEN:
				return true;
			case PAWN:
			case KNIGHT:
			case KING:
				return false;
			case NOCHESSMAN:
			default: