private static void handleMoveType6(PGNMove move, String strippedMove, byte color, byte[][] board)
          throws PGNParseException {
    byte piece = WHITE_PAWN;
    int fromvPos = strippedMove.charAt(1) - '1';
    int tohPos = getChessATOI(strippedMove.charAt(2));
    int tovPos = strippedMove.charAt(3) - '1';
    int fromhPos = -1;

    if (strippedMove.charAt(0) == PAWN.charAt(0)) {
      throw new PGNParseException(strippedMove + " : pawn found");
    } else if (strippedMove.charAt(0) == KNIGHT.charAt(0)) {
      piece = (byte) (BLACK_KNIGHT * color);
      fromhPos = getSingleMovePiecehPos(tohPos, tovPos, fromvPos, piece, board, KNIGHT_SEARCH_PATH);
    } else if (strippedMove.charAt(0) == BISHOP.charAt(0)) {
      piece = (byte) (BLACK_BISHOP * color);
      fromhPos = getMultiMovePiecehPos(tohPos, tovPos, fromvPos, piece, board, BISHOP_SEARCH_PATH);
    } else if (strippedMove.charAt(0) == ROOK.charAt(0)) {
      piece = (byte) (BLACK_ROOK * color);
      fromhPos = getMultiMovePiecehPos(tohPos, tovPos, fromvPos, piece, board, ROOK_SEARCH_PATH);
    } else if (strippedMove.charAt(0) == QUEEN.charAt(0)) {
      piece = (byte) (BLACK_QUEEN * color);
      fromhPos = getMultiMovePiecehPos(tohPos, tovPos, fromvPos, piece, board,
              QUEEN_KING_SEARCH_PATH);
    } else if (strippedMove.charAt(0) == KING.charAt(0)) {
      piece = (byte) (BLACK_KING * color);
      fromhPos = getSingleMovePiecehPos(tohPos, tovPos, fromvPos, piece, board,
              QUEEN_KING_SEARCH_PATH);
    }

    if (fromvPos == -1 || fromhPos == -1) {
      // printBoard(board);
      throw new PGNParseException(move.getFullMove());
    }

    move.setFromSquare(getChessCoords(fromhPos, fromvPos));
    move.setToSquare(getChessCoords(tohPos, tovPos));
    if (move.isCaptured()) {
      move.setCapturedPiece(PIECES[board[tohPos][tovPos] * -color]);
    }
  }