}
public boolean visit(Symbol node) {
if (hits.contains(currentPage)) return true;
if (node.isType(WikiWord.symbolType)) {
WikiPage referencedPage = new WikiWordReference(currentPage, node.getContent()).getReferencedPage();
if (referencedPage != null && referencedPage.equals(subjectPage)) {
hits.add(currentPage);
observer.process(currentPage);
}
}
if (node.isType(Alias.symbolType)) {
String linkText = node.childAt(1).childAt(0).getContent();
if (linkText.contains("?")) {
linkText = linkText.substring(0, linkText.indexOf('?'));
}
WikiPage referencedPage = new WikiWordReference(currentPage, linkText).getReferencedPage();
if (referencedPage != null && referencedPage.equals(subjectPage)) {
hits.add(currentPage);
observer.process(currentPage);
}
}