class MapStructAbstractGateway implements Gateway<DE, AP> {

    @Override
    public List<DE> getAll() {
        List<HE> hibernateEntities = dao.findAll();
        return hibernateEntitiesToDomainEntitiesConverter.convert(hibernateEntities);
    }

    protected  MapStructAbstractGateway(
            Converter<AP, HE> domainAddPayloadToHibernateEntityConverter,
            Merger<DE, HE> domainEntityToHibernateEntityMerger,
            Converter<HE, DE> hibernateEntityToDomainEntityConverter,
            Converter<List<HE>, List<DE>> hibernateEntitiesToDomainEntitiesConverter,
            D dao
    );

}