Duplicating groups of objects?

I have some objects parented to an empty. Now I need to duplicate the whole chunk but I can’t find a way to easily do this, unless I join the meshes and then I use an array, but it’s a destructive way and it doesn’t work for me.
Any solution?

Edit: I’m aware of Collections Instance. At the moment I’m playing with it and results are quite messy in terms of origin being off and unnecessary duplicates. I’m obviously doing something wrong, but I’d love to hear if there’s any other alternatives.