### Question:
MultiWildcardNode extends BasicTreeNode { @Override public boolean hasInterestIn(char value, SearchContext context) { if (value == '?' || value == '#') { return context.has(ContextKey.LAST_CHARACTER); } return true; }  @Override char getNodeValue(); @Override boolean isWildcard(); @Override boolean hasInterestIn(char value, SearchContext context); static final char WILDCARD; }### Answer:
@Test public void allowMultiLevelMatching() { SearchContext context = new MapSearchContext(); assertTrue(multiWildcardTreeNode.hasInterestIn('a', context)); assertTrue(multiWildcardTreeNode.hasInterestIn('b', context)); assertTrue(multiWildcardTreeNode.hasInterestIn('/', context)); assertTrue(multiWildcardTreeNode.hasInterestIn('c', context)); }
@Test public void disallowQuestionMarkMatching() { SearchContext context = new MapSearchContext(); assertFalse(multiWildcardTreeNode.hasInterestIn('?', context)); }
@Test public void disallowBookmarkMatching() { SearchContext context = new MapSearchContext(); assertFalse(multiWildcardTreeNode.hasInterestIn('#', context)); }