class DefaultDataAccessController implements DataAccessController {

    private DataAccessController parent;

    private List<DataAccessHandler> handlers = new LinkedList<>();

    public DefaultDataAccessController() {
        this(null);
    }

    public DefaultDataAccessController(DataAccessController parent) {
        if (parent == this) {
            throw new UnsupportedOperationException();
        }
        this.parent = parent;
                addHandler(new FieldFilterDataAccessHandler())
                .addHandler(new DimensionDataAccessHandler());
    }

    @Override
    public boolean doAccess(DataAccessConfig access, AuthorizingContext context) {<FILL_FUNCTION_BODY>}

    public DefaultDataAccessController addHandler(DataAccessHandler handler) {
        handlers.add(handler);
        return this;
    }

    public void setHandlers(List<DataAccessHandler> handlers) {
        this.handlers = handlers;
    }

    public List<DataAccessHandler> getHandlers() {
        return handlers;
    }
}

        if (parent != null) {
            parent.doAccess(access, context);
        }
        return handlers.stream()
                .filter(handler -> handler.isSupport(access))
                .allMatch(handler -> handler.handle(access, context));
    
<no_super_class>