public String describePages() {
        StringBuilder sb = new StringBuilder(32);
        int sz = pages.size();
        for (int i = 0; i < sz; i++) {
            boolean oddIndex = ((i % 2) == 1);
            boolean closingRangeForSinglePage = false;
            if (oddIndex) {
                closingRangeForSinglePage = pages.get(i).equals(pages.get(i-1));
                if (!closingRangeForSinglePage) {
                    sb.append('-');
                }
            }
            else if (i > 0) {
                sb.append(", ");
            }
            if (!closingRangeForSinglePage) {
                sb.append(pages.get(i).toString());
            }
        }
        return sb.toString();
    }