class ImmutableAccessControlList implements AccessControlList {

    public static AccessControlList fromJson(final JsonObject jsonObject) {
        checkNotNull(jsonObject, "JSON object");

        final Set<AclEntry> aclEntries = new HashSet<>();
        for (final JsonField jsonField : jsonObject) {
            final JsonKey jsonKey = jsonField.getKey();
            if (!jsonKey.equals(JsonSchemaVersion.getJsonKey())) {
                aclEntries.add(AccessControlListModelFactory.newAclEntry(jsonKey, jsonField.getValue()));
            }
        }
        return new ImmutableAccessControlList(aclEntries);
    }

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

}