class MutualDegreeRangeFilter extends AbstractFilter implements RangeFilter, NodeFilter {

        private Range range;

        public MutualDegreeRangeFilter() {
            super(NbBundle.getMessage(MutualDegreeRangeFilter.class, "MutualDegreeRangeBuilder.name"));

            //Add property
            addProperty(Range.class, "range");
        }

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

        @Override
        public boolean evaluate(Graph graph, Node node) {
            DirectedGraph dgraph = (DirectedGraph) graph;
            int degree = 0;
            for (Edge e : dgraph.getOutEdges(node)) {
                if (dgraph.getMutualEdge(e) != null) {
                    degree++;
                }
            }
            return range.isInRange(degree);
        }

        @Override
        public void finish() {
        }

        @Override
        public Number[] getValues(Graph graph) {<FILL_FUNCTION_BODY>}

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

        public Range getRange() {
            return range;
        }

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

            DirectedGraph dgraph = (DirectedGraph) graph;
            List<Integer> values = new ArrayList<>(dgraph.getNodeCount());
            for (Node n : dgraph.getNodes()) {
                int degree = 0;
                for (Edge e : dgraph.getOutEdges(n)) {
                    if (dgraph.getMutualEdge(e) != null) {
                        degree++;
                    }
                }
                values.add(degree);
            }
            return values.toArray(new Number[0]);
        
<no_super_class>