docs: @Override
    public final List<Page> evalPages(final int pCurrentPageNo,
      final int pTotalPages, final int pTailSize) {
      List<Page> pages = new ArrayList<Page>();
      boolean wasLeft3dots = false;
      boolean wasRight3dots = false;
      for (Integer i = 1; i <= pTotalPages; i++) {
        if (i == 1 || i == pTotalPages) {
          pages.add(new Page(i.toString(), pCurrentPageNo == i));
        } else if ((pCurrentPageNo - i) >= 0
            && (pCurrentPageNo - i) <= pTailSize) {
          pages.add(new Page(i.toString(), pCurrentPageNo == i));
        } else if ((pCurrentPageNo - i) < 0
            && (i - pCurrentPageNo) <= pTailSize) {
          pages.add(new Page(i.toString(), pCurrentPageNo == i));
        } else if ((pCurrentPageNo - i) > 0 && !wasLeft3dots) {
          wasLeft3dots = true;
          pages.add(new Page("...", false));
        } else if ((pCurrentPageNo - i) < 0 && !wasRight3dots) {
          wasRight3dots = true;
          pages.add(new Page("...", false));
        }
      }
      return pages;
    }