class Rights {

    public MailboxACL toMailboxAcl() {
        BinaryOperator<MailboxACL> union = Throwing.binaryOperator(MailboxACL::union);

        return rights.asMap()
            .entrySet()
            .stream()
            .map(entry -> new MailboxACL(
                ImmutableMap.of(
                    EntryKey.createUserEntryKey(entry.getKey()),
                    toMailboxAclRights(entry.getValue()))))
            .reduce(MailboxACL.EMPTY, union);
    }

    @JsonCreator public  Rights(Map<Username, List<Right>> rights);
    private  Rights(Multimap<Username, Right> rights);

}