class ArchetypeServiceImpl implements ArchetypeService {

    @Override
    public PaginatedArchetypeList list(final Integer page,
                                       final Integer pageSize,
                                       final String filter) {
        checkNotNull("page", page);
        checkNotNull("pageSize", pageSize);

        final List<Archetype> archetypes =
                listFilteredArchetypes(matchNotInternalRepositories(),
                                       ArchetypeListingPredicates.matchSearchFilter(filter,
                                                                                    ArchetypeServiceImpl::composeSearchableElement));

        return finishListArchetypes(archetypes,
                                    page,
                                    pageSize);
    }

    public  ArchetypeServiceImpl();
    @Inject public  ArchetypeServiceImpl(final @Named("ioStrategy") IOService ioService,
                                final RepositoryService repositoryService,
                                final OrganizationalUnitService ouService,
                                final Event<ArchetypeListUpdatedEvent> archetypeListUpdatedEvent,
                                final ArchetypeConfigStorage archetypeConfigStorage,
                                final PathUtil pathUtil,
                                final ArchetypePreferencesManager archetypePreferencesManager,
                                final KieModuleService moduleService,
                                final POMService pomService);

}