private <S, R extends ResourceSupport> PagedResources<R> createResource(Page<S> page, ResourceAssembler<S, R> assembler, Optional<Link> link) { Assert.notNull(page, "Page must not be null!"); Assert.notNull(assembler, "ResourceAssembler must not be null!"); List<R> resources = new ArrayList<>(page.getNumberOfElements()); for (S element : page) { resources.add(assembler.toResource(element)); } PagedResources<R> resource = createPagedResource(resources, asPageMetadata(page), page); return addPaginationLinks(resource, page, link); }