class DefaultPermissionManager implements PermissionManager {

    @Override
    public PermissionCollection resolvePermissions(User user,
                                                   VotingStrategy votingStrategy) {
        if (user == null) {
            return new DefaultPermissionCollection();
        }
        switch (votingStrategy) {
            case AFFIRMATIVE:
                return resolvePermissionsAffirmative(user);
            case CONSENSUS:
                return resolvePermissionsConsensus(user);
            case UNANIMOUS:
                return resolvePermissionsUnanimous(user);
            default:
                return resolvePermissionsPriority(user);
        }
    }

    @Inject public  DefaultPermissionManager(PermissionTypeRegistry permissionTypeRegistry);
    public  DefaultPermissionManager();
    public  DefaultPermissionManager(PermissionTypeRegistry permissionTypeRegistry,
                                    DefaultAuthzResultCache cache);

}