Dependency Inversion Principle(DIP) is ignoring dependencies from Low Level to High Level.
In your case, your addGroup(Group group) method has dependency to Group class. You can create an IGroup interface and implement it to Group class. Then convert your method like addGroup(IGroup group). Now your business doesn't depend concrete class from Low Level.
I hesitate delegating the responsibility of defining the object to the caller (i.e. defining the method as addGroup(Group group, Map<Username, GroupMember> groupMembers) for instance) as it chips away at abstraction, may be inconsistent with the constructor injected implementation; and in my opinion, introduces unnecessary coupling with the class implementation details.
We are creating many methods and calling within any other methods from library or framework. Those methods don't wait their inner needed as parameters.
In your case, you are able to do mapping(I assume its your business) in your addGroup(Group group) method without depending any other thing from caller. So, you don't need to create public void addGroup(Group group, Map<Username, GroupMember> groupMembers) method for DIP but you should use IUsername and IGroupMember instead of Username and GroupMember in addGroup(IGroup group).