class ImmutableAccessControlList implements AccessControlList {

    @Override
    public Permissions getPermissionsOf(final AuthorizationSubject authorizationSubject) {
        checkNotNull(authorizationSubject, "authorization subject to get the permissions for");

        return getEntryFor(authorizationSubject) //
                .map(AclEntry::getPermissions) //
                .orElseGet(AccessControlListModelFactory::noPermissions);
    }

    private  ImmutableAccessControlList(final Map<AuthorizationSubject, AclEntry> theEntries);
    private  ImmutableAccessControlList(final Collection<AclEntry> theEntries);

}