private void addDiagonalCell (java.util.List<Point> adjoiningCells, Point adjoiningCell, Point parentCell) {
        if (isCellOutOfField(adjoiningCell) || isCellWall(adjoiningCell) || isCellClosed(adjoiningCell) || isCellOpened(adjoiningCell)) {
            return;
        }

        java.util.List<Point> checkCells = new ArrayList<>();
        int dx;
        int dy;
        if (adjoiningCell.x > parentCell.x) {
            dx = 1;
        } else {
            dx = -1;
        }
        if (adjoiningCell.y > parentCell.y) {
            dy = 1;
        } else {
            dy = -1;
        }

        checkCells.add(new Point(parentCell.x + dx, parentCell.y));
        checkCells.add(new Point(parentCell.x, parentCell.y + dy));

        int wallsCount = 0;
        for (Point checkCell : checkCells) {
            if (field[checkCell.x][checkCell.y] instanceof Wall) {
                wallsCount++;
            }
        }

        if (wallsCount > 0) {
            return;
        }

        adjoiningCells.add(adjoiningCell);
        field[adjoiningCell.x][adjoiningCell.y].setParent(parentCell);
    }