@@ -0,0 +1,1453 @@
+/*%0A * Copyright 2016 Palantir Technologies%0A *%0A * Licensed under the BSD-3 License (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://opensource.org/licenses/BSD-3-Clause%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A *%0A */%0A%0Apackage com.palantir.util.paging;%0A%0Aimport java.util.List;%0A%0Aimport com.google.common.collect.ImmutableList;%0Aimport com.google.common.collect.Lists;%0A%0Apublic abstract class Pager%3CT%3E %7B%0A%0A    protected int pageSize;%0A%0A    protected Pager(int pageSize) %7B%0A        this.pageSize = pageSize;%0A    %7D%0A%0A    public List%3CT%3E getPages() %7B%0A        List%3CT%3E pages = Lists.newArrayList();%0A        List%3CT%3E currentPage = getFirstPage();%0A        pages.addAll(currentPage);%0A        while (hasNextPage(currentPage)) %7B%0A            currentPage = getNextPage(ImmutableList.copyOf(currentPage));%0A            pages.addAll(currentPage);%0A        %7D%0A%0A        return pages;%0A    %7D%0A%0A    public abstract List%3CT%3E getFirstPage();%0A%0A    public abstract List%3CT%3E getNextPage(List%3CT%3E currentPage);%0A%0A    public boolean hasNextPage(List%3CT%3E currentPage) %7B%0A        return currentPage.size() %3E= pageSize;%0A    %7D%0A%7D%0A%0A

Write a simple pager