public <VisitorType extends Visitor> Optional<VisitorType> visitNonLiteral(VisitorType v) { if (isLiteral()) return Optional.empty(); for (IdentifierMatch matchHead = matcher_; matchHead != null; matchHead = matchHead.getSuccessor().orElse(null)) matchHead.doVisit(v); return Optional.of(v); }