Vector<Integer> getNeighboringIndexes(int index) {
        Vector<Integer> result = new Vector<Integer>(6);
        int row = getRow(index);
        int col = getColumn(index);
        int offset = getOffset(row);
        if (row < numRows - 1) {
            if (col + offset > 0) {
                result.add(getIndex(row + 1, col + offset - 1));
            }
            if (col + offset < numColumns - 1) {
                result.add(getIndex(row + 1, col + offset));
            }
        }
        if (col > 0) {
            result.add(getIndex(row, col - 1));
        }
        if (col < numColumns - 1) {
            result.add(getIndex(row, col + 1));
        }
        if (row > 0) {
            if (col + offset > 0) {
                result.add(getIndex(row - 1, col + offset - 1));
            }
            if (col + offset < numColumns - 1) {
                result.add(getIndex(row - 1, col + offset));
            }
        }
        result.trimToSize();
        return result;
    }