### Question:
DecisionTree extends DelegateTree<DecisionTreeNode, DecisionTreeEdge> { public DecisionTreeEdge findMatchingEdge(final DecisionTreeNode parent, final Object value) { for (final DecisionTreeEdge e : getOutEdges(parent)) { if (e.decide(value)) { return e; } } return null; } DecisionTree(final DecisionTreeNode rootNode); ObservableGraph<DecisionTreeNode, DecisionTreeEdge> getObservableGraph(); LeafNode decide(final Object obj); DecisionTreeNode getEdgeTarget(final DecisionTreeEdge e); DecisionTreeNode getEdgeSource(final DecisionTreeEdge e); DecisionTreeEdge findMatchingEdge(final DecisionTreeNode parent, final Object value); void replaceChild(final DecisionTreeEdge edge, final DecisionTreeNode newChild); boolean equivalent(DecisionTree obj); String getLabel(Category category);  }### Answer:
@Test public void testFindMatchingRangeEdge() { final DecisionTreeNode root = new ChoiceNode(FixedDose.class, FixedDose.PROPERTY_QUANTITY); final DecisionTree tree = new DecisionTree(root); final RangeEdge lowEdge = new RangeEdge(0.0, false, 20.0, false); final RangeEdge medEdge = new RangeEdge(20.0, true, 80.0, false); final RangeEdge higEdge = new RangeEdge(80.0, true, Double.POSITIVE_INFINITY, false); tree.addEdge(lowEdge, root, new LeafNode(new Category(d_tc, "low"))); tree.addEdge(medEdge, root, new LeafNode(new Category(d_tc, "medium"))); tree.addEdge(higEdge, root, new LeafNode(new Category(d_tc, "high"))); assertEquals(lowEdge, tree.findMatchingEdge(root, 5.0)); assertEquals(medEdge, tree.findMatchingEdge(root, 25.0)); assertEquals(higEdge, tree.findMatchingEdge(root, 85.0)); }