class DimensionHelper {


    public static Set<Object> getDimensionDataAccessScope(Authentication atz,
                                                          Permission permission,
                                                          String action,
                                                          String dimensionType) {
        return permission
                .getDataAccesses(action)
                .stream()
                .filter(DimensionDataAccessConfig.class::isInstance)
                .map(DimensionDataAccessConfig.class::cast)
                .filter(conf -> dimensionType.equals(conf.getScopeType()))
                .flatMap(conf -> {
                    if (CollectionUtils.isEmpty(conf.getScope())) {
                        return atz.getDimensions(dimensionType)
                                .stream()
                                .map(Dimension::getId);
                    }
                    return conf.getScope().stream();
                }).collect(Collectors.toSet());
    }

    public static Set<Object> getDimensionDataAccessScope(Authentication atz,
                                                          Permission permission,
                                                          String action,
                                                          DimensionType dimensionType) {
        return getDimensionDataAccessScope(atz, permission, action, dimensionType.getId());
    }


    public static Set<Object> getDimensionDataAccessScope(Authentication atz,
                                                          String permission,
                                                          String action,
                                                          String dimensionType) {<FILL_FUNCTION_BODY>}

    public static Set<Object> getDimensionDataAccessScope(Authentication atz,
                                                          String permission,
                                                          String action,
                                                          DimensionType dimensionType) {
        return atz
                .getPermission(permission)
                .map(per -> getDimensionDataAccessScope(atz, per, action, dimensionType))
                .orElseGet(Collections::emptySet);
    }

}

        return atz
                .getPermission(permission)
                .map(per -> getDimensionDataAccessScope(atz, per, action, dimensionType)).orElseGet(Collections::emptySet);
    
<no_super_class>