### Question:
CTrie { Optional<CNode> lookup(Topic topic) { INode inode = this.root; Token token = topic.headToken(); while (!topic.isEmpty() && (inode.mainNode().anyChildrenMatch(token))) { topic = topic.exceptHeadToken(); inode = inode.mainNode().childOf(token); token = topic.headToken(); } if (inode == null || !topic.isEmpty()) { return Optional.empty(); } return Optional.of(inode.mainNode()); } CTrie(); Set<Subscription> recursiveMatch(Topic topic); void addToTree(Subscription newSubscription); void removeFromTree(Topic topic, String clientID); int size(); String dumpTree();  }### Answer:
@Test public void testLookup() { final Subscription existingSubscription = clientSubOnTopic("TempSensor1", "/temp"); sut.addToTree(existingSubscription); final Optional<CNode> matchedNode = sut.lookup(asTopic("/humidity")); assertFalse("Node on path /humidity can't be present", matchedNode.isPresent()); }