class DegreeRangeBuilder implements FilterBuilder {

    @Override
    public Category getCategory() {
        return FilterLibrary.TOPOLOGY;
    }

    @Override
    public String getName() {
        return NbBundle.getMessage(DegreeRangeBuilder.class, "DegreeRangeBuilder.name");
    }

    @Override
    public Icon getIcon() {
        return null;
    }

    @Override
    public String getDescription() {
        return NbBundle.getMessage(DegreeRangeBuilder.class, "DegreeRangeBuilder.description");
    }

    @Override
    public DegreeRangeFilter getFilter(Workspace workspace) {
        return new DegreeRangeFilter();
    }

    @Override
    public JPanel getPanel(Filter filter) {<FILL_FUNCTION_BODY>}

    @Override
    public void destroy(Filter filter) {
    }

    public static class DegreeRangeFilter extends AbstractFilter implements RangeFilter, NodeFilter {

        private Range range;

        public DegreeRangeFilter() {
            super(NbBundle.getMessage(DegreeRangeBuilder.class, "DegreeRangeBuilder.name"));

            addProperty(Range.class, "range");
        }

        @Override
        public boolean init(Graph graph) {
            return graph.getNodeCount() != 0;
        }

        @Override
        public boolean evaluate(Graph graph, Node node) {
            int degree = graph.getDegree(node);
            return range.isInRange(degree);
        }

        @Override
        public void finish() {
        }

        @Override
        public Number[] getValues(Graph graph) {
            List<Integer> values = new ArrayList<>(graph.getNodeCount());
            for (Node n : graph.getNodes()) {
                int degree = graph.getDegree(n);
                values.add(degree);
            }
            return values.toArray(new Number[0]);
        }

        @Override
        public FilterProperty getRangeProperty() {
            return getProperties()[0];
        }

        public Range getRange() {
            return range;
        }

        public void setRange(Range range) {
            this.range = range;
        }
    }
}

        RangeUI ui = Lookup.getDefault().lookup(RangeUI.class);
        if (ui != null) {
            return ui.getPanel((DegreeRangeFilter) filter);
        }
        return null;
    
<no_super_class>