public static ChessPiece from(PieceColor color, PieceType type) {
        for (ChessPiece chessPiece : values()) {
            if (chessPiece.type == type && chessPiece.color == color) {
                return chessPiece;
            }
        }
        throw new IllegalArgumentException(String.format("There is no chess piece of type and color: [%s, %s]", type, color));
    }