private ArrayList<Cell> calculateCustomSeatingOrder() {
        // Find the maximum number from the given order
        int maximumNumber = 0;
        for (int[] array : this.customMethod) {
            for (int y = 0; y < array.length; y++) {
                if (array[y] > maximumNumber) {
                    maximumNumber = array[y];
                }
            }
        }

        // Create the containers for the ordered seats
        ArrayList<ArrayList<Cell>> container = new ArrayList<>();
        for (int x = 0; x <= maximumNumber; x++) {
            ArrayList<Cell> list = new ArrayList<>();
            container.add(list);
        }

        Cell[][] normalSeats = this.planeDimension.getAllSeats();

        // Place all of the seats into the container
        for (int x = 0; x < this.customMethod.length; x++) {
            for (int y = 0; y < this.customMethod[x].length; y++) {
                if (this.customMethod[x][y] != -1) {
                    container.get(this.customMethod[x][y]).add(normalSeats[x][y]);
                }
            }
        }

        ArrayList<Cell> finalOrder = new ArrayList<>();

        for (ArrayList<Cell> list : container) {
            finalOrder.addAll(this.createRandomSeatingOrderFromSeats(list));
        }

        return this.createFinalOrder(finalOrder);
    }