class CombinedMaster implements AbstractMaster<D> {

  protected void applyPaging(AbstractDocumentsResult<D> result, PagingRequest originalRequest) {
    result.setPaging(Paging.of(originalRequest, result.getDocuments().size()));
    int docSize = result.getDocuments().size();
    int firstItem = originalRequest.getFirstItem() > docSize ? docSize : originalRequest.getFirstItem();
    int lastItem = originalRequest.getLastItem() > docSize ? docSize : originalRequest.getLastItem();
    ArrayList<D> resultDocuments = Lists.newArrayList(result.getDocuments().subList(firstItem, lastItem));
    result.setDocuments(resultDocuments);
  }

  protected  CombinedMaster(List<M> masterList);

}