public static boolean canMove(Tile[][] board, Tile tile) {
        boolean canMove = false;
        switch (tile.getSpecialPosition()) {
            case TOP_LEFT:
                canMove = checkNeighborsFromTopLeft(board, tile);
                break;
            case TOP_RIGHT:
                canMove = checkNeighborsFromTopRight(board, tile);
                break;
            case BOTTOM_LEFT:
                canMove = checkNeighborsFromBottomLeft(board, tile);
                break;
            case BOTTOM_RIGHT:
                canMove = checkNeighborsFromBottomRight(board, tile);
                break;
            case TOP:
                canMove = checkNeighborsFromTop(board, tile);
                break;
            case BOTTOM:
                canMove = checkNeighborsFromBottom(board, tile);
                break;
            case LEFT:
                canMove = checkNeighborsFromLeft(board, tile);
                break;
            case RIGHT:
                canMove = checkNeighborsFromRight(board, tile);
                break;
            case NONE:
                canMove = checkNeighborsFromNone(board, tile);
                break;
        }

        return canMove;
    }