class AppearanceControllerImpl implements AppearanceController, Controller<AppearanceModelImpl> {

    public AppearanceControllerImpl() {
    }

    @Override
    public AppearanceModelImpl newModel(Workspace workspace) {
        return new AppearanceModelImpl(workspace);
    }

    @Override
    public void transform(Function function) {<FILL_FUNCTION_BODY>}

    @Override
    public Class<AppearanceModelImpl> getModelClass() {
        return AppearanceModelImpl.class;
    }

    @Override
    public AppearanceModelImpl getModel() {
        return Controller.super.getModel();
    }

    @Override
    public AppearanceModelImpl getModel(Workspace workspace) {
        return Controller.super.getModel(workspace);
    }

    @Override
    public Transformer getTransformer(TransformerUI ui) {
        Class<? extends Transformer> transformerClass = ui.getTransformerClass();
        Transformer transformer = Lookup.getDefault().lookup(transformerClass);
        return transformer;
    }

    @Override
    public void setUseRankingLocalScale(boolean useLocalScale) {
        AppearanceModelImpl model = getModel();
        if (model != null) {
            model.setRankingLocalScale(useLocalScale);
        }
    }

    @Override
    public void setUsePartitionLocalScale(boolean useLocalScale) {
        AppearanceModelImpl model = getModel();
        if (model != null) {
            model.setPartitionLocalScale(useLocalScale);
        }
    }

    @Override
    public void setTransformNullValues(boolean transformNullValues) {
        AppearanceModelImpl model = getModel();
        if (model != null) {
            model.setTransformNullValues(transformNullValues);
        }
    }
}

        if (!function.isValid()) {
            return;
        }
        GraphModel graphModel = function.getGraph().getModel();
        Graph graph = graphModel.getGraphVisible();
        ElementIterable<? extends Element> iterable;
        if (function.getElementClass().equals(Node.class)) {
            iterable = graph.getNodes();
        } else {
            iterable = graph.getEdges();
        }
        try {
            function.transformAll(iterable);
        } catch (Exception e) {
            iterable.doBreak();
            if (e instanceof RuntimeException) {
                throw (RuntimeException) e;
            } else {
                throw new RuntimeException(e);
            }
        }
    
<no_super_class>